From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- writerperfect/AllLangMoTarget_wpt.mk | 13 + writerperfect/CppunitTest_writerperfect_calc.mk | 42 + .../CppunitTest_writerperfect_dialogs_test.mk | 68 + writerperfect/CppunitTest_writerperfect_draw.mk | 39 + .../CppunitTest_writerperfect_epubexport.mk | 48 + writerperfect/CppunitTest_writerperfect_import.mk | 41 + writerperfect/CppunitTest_writerperfect_impress.mk | 39 + writerperfect/CppunitTest_writerperfect_stream.mk | 59 + .../CppunitTest_writerperfect_wpftimport.mk | 57 + writerperfect/CppunitTest_writerperfect_writer.mk | 43 + writerperfect/IwyuFilter_writerperfect.yaml | 202 ++ writerperfect/Library_wpftcalc.mk | 70 + writerperfect/Library_wpftdraw.mk | 85 + writerperfect/Library_wpftimpress.mk | 63 + writerperfect/Library_wpftqahelper.mk | 43 + writerperfect/Library_wpftwriter.mk | 133 + writerperfect/Library_writerperfect.mk | 60 + writerperfect/Makefile | 14 + writerperfect/Module_writerperfect.mk | 60 + writerperfect/README.md | 9 + writerperfect/UIConfig_writerperfect.mk | 27 + writerperfect/UITest_writerperfect_epubexport.mk | 16 + writerperfect/inc/DirectoryStream.hxx | 57 + writerperfect/inc/DocumentHandler.hxx | 51 + writerperfect/inc/DocumentHandlerFor.hxx | 22 + writerperfect/inc/DocumentHandlerForOdg.hxx | 24 + writerperfect/inc/DocumentHandlerForOdp.hxx | 24 + writerperfect/inc/DocumentHandlerForOds.hxx | 24 + writerperfect/inc/DocumentHandlerForOdt.hxx | 24 + writerperfect/inc/ImportFilter.hxx | 183 ++ writerperfect/inc/WPFTEncodingDialog.hxx | 45 + writerperfect/inc/WPFTResMgr.hxx | 9 + writerperfect/inc/WPXSvInputStream.hxx | 54 + writerperfect/inc/strings.hrc | 23 + writerperfect/inc/writerperfectdllapi.h | 20 + writerperfect/qa/uitest/epubexport/epubexport.py | 128 + writerperfect/qa/unit/DirectoryStreamTest.cxx | 148 ++ writerperfect/qa/unit/DrawingImportTest.cxx | 156 ++ writerperfect/qa/unit/EPUBExportTest.cxx | 886 +++++++ writerperfect/qa/unit/ImportTest.cxx | 124 + writerperfect/qa/unit/PresentationImportTest.cxx | 156 ++ writerperfect/qa/unit/SpreadsheetImportTest.cxx | 138 + writerperfect/qa/unit/TextImportTest.cxx | 145 ++ writerperfect/qa/unit/WPXSvStreamTest.cxx | 355 +++ writerperfect/qa/unit/WpftCalcFilterTest.cxx | 62 + writerperfect/qa/unit/WpftDrawFilterTest.cxx | 81 + writerperfect/qa/unit/WpftFilterFixture.cxx | 35 + writerperfect/qa/unit/WpftFilterFixture.hxx | 85 + writerperfect/qa/unit/WpftFilterTestBase.cxx | 62 + writerperfect/qa/unit/WpftFilterTestBase.hxx | 68 + writerperfect/qa/unit/WpftImpressFilterTest.cxx | 62 + writerperfect/qa/unit/WpftLoader.cxx | 210 ++ writerperfect/qa/unit/WpftLoader.hxx | 100 + writerperfect/qa/unit/WpftWriterFilterTest.cxx | 81 + .../qa/unit/data/calc/libetonyek/fail/.gitignore | 0 .../data/calc/libetonyek/indeterminate/.gitignore | 0 .../data/calc/libetonyek/pass/Numbers_2.numbers | Bin 0 -> 113709 bytes .../qa/unit/data/calc/libmwaw/fail/.gitignore | 0 .../calc/libmwaw/indeterminate/GreatWorks_1.0.hqx | 61 + .../calc/libmwaw/indeterminate/GreatWorks_2.0.hqx | 125 + .../libmwaw/indeterminate/GreatWorks_DB_1.0.hqx | 115 + .../libmwaw/indeterminate/GreatWorks_DB_2.0.hqx | 222 ++ .../data/calc/libmwaw/pass/BeagleWorks_1.0.hqx | 45 + .../data/calc/libmwaw/pass/BeagleWorks_DB_1.0.hqx | 176 ++ .../data/calc/libmwaw/pass/ClarisResolve_1.0.hqx | 43 + .../data/calc/libmwaw/pass/ClarisWorks_2.0.hqx | 102 + .../data/calc/libmwaw/pass/ClarisWorks_4.0.hqx | 160 ++ .../data/calc/libmwaw/pass/ClarisWorks_5.0.cwk | Bin 0 -> 11256 bytes .../data/calc/libmwaw/pass/ClarisWorks_6.0.cwk | Bin 0 -> 24176 bytes .../unit/data/calc/libmwaw/pass/ClarisWorks_DB.cwk | Bin 0 -> 14607 bytes .../data/calc/libmwaw/pass/ClarisWorks_DB_2.0.hqx | 95 + .../data/calc/libmwaw/pass/ClarisWorks_DB_4.0.hqx | 134 + .../data/calc/libmwaw/pass/ClarisWorks_DB_5.0.cwk | Bin 0 -> 10691 bytes .../qa/unit/data/calc/libmwaw/pass/JazzLotus.hqx | 39 + .../data/calc/libmwaw/pass/MicrosoftWorks_2.0.hqx | 45 + .../data/calc/libmwaw/pass/MicrosoftWorks_3.0.hqx | 54 + .../data/calc/libmwaw/pass/MicrosoftWorks_4.0.wk4 | Bin 0 -> 5632 bytes .../calc/libmwaw/pass/MicrosoftWorks_DB_2.0.hqx | 20 + .../calc/libmwaw/pass/MicrosoftWorks_DB_3.0.hqx | 266 ++ .../calc/libmwaw/pass/MicrosoftWorks_DB_4.0.wdb | Bin 0 -> 10240 bytes .../qa/unit/data/calc/libmwaw/pass/Multiplan_1.hqx | 46 + .../qa/unit/data/calc/libmwaw/pass/Wingz_1.0.hqx | 28 + .../calc/libmwaw/pass/WordPerfectWorks_1.0.hqx | 45 + .../calc/libmwaw/pass/WordPerfectWorks_DB_1.0.hqx | 176 ++ .../unit/data/calc/libstaroffice/fail/.gitignore | 0 .../calc/libstaroffice/indeterminate/.gitignore | 0 .../unit/data/calc/libstaroffice/pass/Calc_3.1.sdc | Bin 0 -> 11776 bytes .../qa/unit/data/calc/libwps/fail/.gitignore | 0 .../unit/data/calc/libwps/indeterminate/.gitignore | 0 .../qa/unit/data/calc/libwps/pass/Lotus.wk1 | Bin 0 -> 1503 bytes .../qa/unit/data/calc/libwps/pass/Lotus123_3.123 | Bin 0 -> 30352 bytes .../qa/unit/data/calc/libwps/pass/Lotus123_98.123 | Bin 0 -> 7616 bytes .../qa/unit/data/calc/libwps/pass/Multiplan_3 | Bin 0 -> 2612 bytes .../qa/unit/data/calc/libwps/pass/QuattroPro.wb1 | Bin 0 -> 174166 bytes .../qa/unit/data/calc/libwps/pass/QuattroPro.wq1 | Bin 0 -> 3540 bytes .../qa/unit/data/calc/libwps/pass/Works_2.0.wdb | Bin 0 -> 1276 bytes .../qa/unit/data/calc/libwps/pass/Works_2.0.wks | Bin 0 -> 1281 bytes .../unit/data/calc/libwps/pass/Works_Windows.wdb | Bin 0 -> 5632 bytes .../unit/data/calc/libwps/pass/Works_Windows.wks | Bin 0 -> 2295 bytes .../qa/unit/data/draw/libcdr-cmx/fail/.gitignore | 0 .../data/draw/libcdr-cmx/indeterminate/.gitignore | 0 .../unit/data/draw/libcdr-cmx/pass/fdo63782-1.cmx | Bin 0 -> 35772 bytes .../qa/unit/data/draw/libcdr/fail/.gitignore | 0 .../qa/unit/data/draw/libcdr/fail/EDB-35217-1.cdr | Bin 0 -> 10900 bytes .../unit/data/draw/libcdr/indeterminate/.gitignore | 0 .../qa/unit/data/draw/libcdr/pass/EDB-35217-2.cdr | Bin 0 -> 10900 bytes .../qa/unit/data/draw/libcdr/pass/fdo65220-2.cdr | Bin 0 -> 10755 bytes .../qa/unit/data/draw/libfreehand/fail/.gitignore | 0 .../data/draw/libfreehand/indeterminate/.gitignore | 0 .../qa/unit/data/draw/libfreehand/pass/.gitignore | 0 .../qa/unit/data/draw/libmspub/fail/.gitignore | 0 .../data/draw/libmspub/indeterminate/.gitignore | 0 .../unit/data/draw/libmspub/pass/EDB-22310-1.pub | Bin 0 -> 577536 bytes .../unit/data/draw/libmspub/pass/EDB-22655-1.pub | Bin 0 -> 577536 bytes .../unit/data/draw/libmspub/pass/EDB-29664-1.pub | Bin 0 -> 89600 bytes .../qa/unit/data/draw/libmspub/pass/fdo59355-1.pub | Bin 0 -> 10752 bytes .../qa/unit/data/draw/libmwaw/fail/.gitignore | 0 .../draw/libmwaw/indeterminate/GreatWorks_1.0.hqx | 44 + .../draw/libmwaw/indeterminate/GreatWorks_2.0.hqx | 104 + .../libmwaw/indeterminate/GreatWorks_P_1.0.hqx | 98 + .../data/draw/libmwaw/pass/BeagleWorks_1.0.hqx | 104 + .../data/draw/libmwaw/pass/BeagleWorks_P_1.0.hqx | 427 ++++ .../qa/unit/data/draw/libmwaw/pass/Canvas_2.hqx | 407 +++ .../qa/unit/data/draw/libmwaw/pass/ClarisDraw.hqx | 160 ++ .../data/draw/libmwaw/pass/ClarisWorks_2.0.hqx | 161 ++ .../data/draw/libmwaw/pass/ClarisWorks_4.0.hqx | 181 ++ .../data/draw/libmwaw/pass/ClarisWorks_5.0.cwk | Bin 0 -> 195344 bytes .../data/draw/libmwaw/pass/ClarisWorks_6.0.cwk | Bin 0 -> 198376 bytes .../qa/unit/data/draw/libmwaw/pass/CorelPainter_10 | Bin 0 -> 178980 bytes .../data/draw/libmwaw/pass/CorelPainter_3_win.rif | Bin 0 -> 1944 bytes .../data/draw/libmwaw/pass/CricketDraw_1.0.hqx | 133 + .../data/draw/libmwaw/pass/CricketDraw_1.1.hqx | 72 + .../unit/data/draw/libmwaw/pass/DrawingTable_1.hqx | 196 ++ .../unit/data/draw/libmwaw/pass/FreeHand_1.0.hqx | 75 + .../unit/data/draw/libmwaw/pass/FreeHand_2.0.hqx | 49 + .../unit/data/draw/libmwaw/pass/MacDraft_1.0.hqx | 134 + .../unit/data/draw/libmwaw/pass/MacDraft_5.5.drw | Bin 0 -> 62079 bytes .../qa/unit/data/draw/libmwaw/pass/MacDraw_0.hqx | 9 + .../qa/unit/data/draw/libmwaw/pass/MacDraw_1.hqx | 103 + .../qa/unit/data/draw/libmwaw/pass/MacDraw_II.hqx | 110 + .../data/draw/libmwaw/pass/MacDraw_Pro_1.0.hqx | 109 + .../unit/data/draw/libmwaw/pass/MacPaint_1.0.hqx | 72 + .../unit/data/draw/libmwaw/pass/MacPaint_2.0.hqx | 116 + .../data/draw/libmwaw/pass/MicrosoftWorks_3.0.hqx | 27 + .../data/draw/libmwaw/pass/MicrosoftWorks_4.0.msw | Bin 0 -> 10752 bytes .../qa/unit/data/draw/libmwaw/pass/ReadySetGo_1 | Bin 0 -> 150 bytes .../qa/unit/data/draw/libmwaw/pass/Scoop_1 | Bin 0 -> 608 bytes .../unit/data/draw/libmwaw/pass/SuperPaint_1.0.hqx | 27 + .../data/draw/libmwaw/pass/SuperPaint_P_1.0.hqx | 71 + .../draw/libmwaw/pass/WordPerfectWorks_1.0.hqx | 104 + .../draw/libmwaw/pass/WordPerfectWorks_P_1.0.hqx | 137 + .../qa/unit/data/draw/libpagemaker/fail/.gitignore | 0 .../draw/libpagemaker/indeterminate/.gitignore | 0 .../qa/unit/data/draw/libpagemaker/pass/shapes.pmd | Bin 0 -> 96256 bytes .../unit/data/draw/libstaroffice/fail/.gitignore | 0 .../draw/libstaroffice/indeterminate/.gitignore | 0 .../unit/data/draw/libstaroffice/pass/Draw_3.1.sda | Bin 0 -> 23040 bytes .../qa/unit/data/draw/libvisio/fail/.gitignore | 0 .../data/draw/libvisio/indeterminate/.gitignore | 0 .../unit/data/draw/libvisio/pass/EDB-22679-1.vsd | Bin 0 -> 681984 bytes .../qa/unit/data/draw/libvisio/pass/fdo57117-1.vsd | Bin 0 -> 11264 bytes .../qa/unit/data/draw/libwpg/fail/.gitignore | 0 .../unit/data/draw/libwpg/indeterminate/.gitignore | 0 .../qa/unit/data/draw/libwpg/pass/WPG1.wpg | Bin 0 -> 79 bytes .../qa/unit/data/draw/libzmf/fail/.gitignore | 0 .../unit/data/draw/libzmf/indeterminate/.gitignore | 0 .../qa/unit/data/draw/libzmf/pass/ZonerDraw_5.zmf | Bin 0 -> 1408 bytes writerperfect/qa/unit/data/import/SOLVE.FM3 | Bin 0 -> 1827 bytes writerperfect/qa/unit/data/import/SOLVE.WK3 | Bin 0 -> 10772 bytes .../unit/data/impress/libetonyek/fail/.gitignore | 0 .../impress/libetonyek/indeterminate/.gitignore | 0 .../data/impress/libetonyek/pass/Keynote_1.key | Bin 0 -> 1252706 bytes .../data/impress/libetonyek/pass/Keynote_2.key | Bin 0 -> 335906 bytes .../data/impress/libetonyek/pass/Keynote_3.key | Bin 0 -> 6972479 bytes .../data/impress/libetonyek/pass/Keynote_4.key | Bin 0 -> 7340562 bytes .../data/impress/libetonyek/pass/Keynote_5.key | Bin 0 -> 2210218 bytes .../data/impress/libetonyek/pass/Keynote_6.key | Bin 0 -> 379391 bytes .../qa/unit/data/impress/libmwaw/fail/.gitignore | 0 .../data/impress/libmwaw/indeterminate/.gitignore | 0 .../data/impress/libmwaw/pass/ClarisWorks_6.0.cwk | Bin 0 -> 16880 bytes .../data/impress/libmwaw/pass/PowerPoint_2.ppt | Bin 0 -> 3708 bytes .../data/impress/libmwaw/pass/PowerPoint_3.ppt | Bin 0 -> 8861 bytes .../data/impress/libmwaw/pass/PowerPoint_4.ppt | Bin 0 -> 33792 bytes .../data/impress/libmwaw/pass/PowerPoint_7.ppt | Bin 0 -> 169472 bytes .../data/impress/libmwaw/pass/PowerPoint_Mac_1 | 48 + .../data/impress/libmwaw/pass/PowerPoint_Mac_2 | Bin 0 -> 1892 bytes .../data/impress/libmwaw/pass/PowerPoint_Mac_3 | 101 + .../data/impress/libmwaw/pass/PowerPoint_Mac_4.ppt | Bin 0 -> 15872 bytes writerperfect/qa/unit/data/stream/fdo40686-1.doc | Bin 0 -> 12288 bytes .../data/stream/test.dir/META-INF/manifest.xml | 1 + .../data/stream/test.dir/Thumbnails/thumbnail.png | 1 + .../qa/unit/data/stream/test.dir/content.xml | 1 + .../qa/unit/data/stream/test.dir/manifest.rdf | 1 + .../qa/unit/data/stream/test.dir/meta.xml | 1 + .../qa/unit/data/stream/test.dir/mimetype | 1 + .../qa/unit/data/stream/test.dir/settings.xml | 1 + .../qa/unit/data/stream/test.dir/styles.xml | 1 + writerperfect/qa/unit/data/stream/test.odt | Bin 0 -> 8486 bytes .../qa/unit/data/writer/epubexport/2pages.fodt | 14 + .../qa/unit/data/writer/epubexport/abi11105.abw | 200 ++ .../data/writer/epubexport/char-namedstyle.fodt | 16 + .../qa/unit/data/writer/epubexport/escape.fodt | 16 + .../data/writer/epubexport/font-embedding.fodt | 2657 ++++++++++++++++++++ .../qa/unit/data/writer/epubexport/footnote.fodt | 8 + .../qa/unit/data/writer/epubexport/fxl-2page.fodt | 78 + .../qa/unit/data/writer/epubexport/hello.fodt | 8 + .../unit/data/writer/epubexport/image-border.fodt | 36 + .../qa/unit/data/writer/epubexport/image-link.fodt | 37 + .../unit/data/writer/epubexport/image-nospan.fodt | 33 + .../qa/unit/data/writer/epubexport/image.fodt | 28 + .../qa/unit/data/writer/epubexport/line-break.fodt | 20 + .../data/writer/epubexport/link-charformat.fodt | 13 + .../unit/data/writer/epubexport/link-invalid.odt | Bin 0 -> 9554 bytes .../writer/epubexport/link-namedcharformat.fodt | 13 + .../qa/unit/data/writer/epubexport/link.fodt | 8 + .../qa/unit/data/writer/epubexport/list.fodt | 36 + .../qa/unit/data/writer/epubexport/meta-xmp.fodt | 14 + .../data/writer/epubexport/meta-xmp/metadata.xmp | 28 + .../qa/unit/data/writer/epubexport/meta.fodt | 14 + .../qa/unit/data/writer/epubexport/meta/cover.png | Bin 0 -> 766 bytes .../writer/epubexport/named-style-inheritance.fodt | 39 + .../unit/data/writer/epubexport/nested-span.fodt | 21 + .../unit/data/writer/epubexport/outline-level.fodt | 15 + .../epubexport/para-autostyle-char-props.fodt | 21 + .../data/writer/epubexport/para-char-props.fodt | 16 + .../data/writer/epubexport/para-namedstyle.fodt | 18 + .../qa/unit/data/writer/epubexport/popup-api.odt | Bin 0 -> 10103 bytes .../qa/unit/data/writer/epubexport/popup-media.odt | Bin 0 -> 10111 bytes .../writer/epubexport/popup-media/libreoffice.png | Bin 0 -> 714 bytes .../qa/unit/data/writer/epubexport/popup.odt | Bin 0 -> 10103 bytes .../data/writer/epubexport/popup/libreoffice.png | Bin 0 -> 714 bytes .../qa/unit/data/writer/epubexport/section.fodt | 12 + .../qa/unit/data/writer/epubexport/simple-ruby.odt | Bin 0 -> 8307 bytes .../data/writer/epubexport/span-autostyle.fodt | 19 + .../data/writer/epubexport/table-cell-border.fodt | 48 + .../data/writer/epubexport/table-cell-width.fodt | 45 + .../data/writer/epubexport/table-row-height.fodt | 42 + .../data/writer/epubexport/table-row-span.fodt | 42 + .../unit/data/writer/epubexport/table-width.fodt | 28 + .../qa/unit/data/writer/epubexport/table.fodt | 39 + .../writer/epubexport/tdf115623-many-pagespans.odt | Bin 0 -> 8591 bytes .../epubexport/tdf115623-single-writing-mode.odt | Bin 0 -> 8562 bytes .../epubexport/tdf115623-split-by-chapter.odt | Bin 0 -> 9346 bytes .../qa/unit/data/writer/epubexport/text-box.fodt | 48 + .../qa/unit/data/writer/libabw/fail/.gitignore | 0 .../data/writer/libabw/indeterminate/.gitignore | 0 .../qa/unit/data/writer/libabw/pass/hello.abw | 32 + .../qa/unit/data/writer/libabw/pass/hello.zabw | Bin 0 -> 1128 bytes .../qa/unit/data/writer/libe-book/fail/TCR.tcr | Bin 0 -> 288 bytes .../data/writer/libe-book/indeterminate/.gitignore | 0 .../writer/libe-book/pass/Broad_Band_eBook.lrf | Bin 0 -> 1477 bytes .../data/writer/libe-book/pass/FictionBook2.fb2 | 26 + .../writer/libe-book/pass/FictionBook2.fb2.zip | Bin 0 -> 472 bytes .../qa/unit/data/writer/libe-book/pass/PalmDOC.pdb | Bin 0 -> 135 bytes .../data/writer/libe-book/pass/PeanutPress.pdb | Bin 0 -> 419 bytes .../qa/unit/data/writer/libe-book/pass/Plucker.pdb | Bin 0 -> 4838 bytes .../qa/unit/data/writer/libe-book/pass/TealDoc.pdb | Bin 0 -> 4182 bytes .../qa/unit/data/writer/libe-book/pass/zTXT.pdb | Bin 0 -> 4594 bytes .../qa/unit/data/writer/libetonyek/fail/.gitignore | 0 .../writer/libetonyek/indeterminate/.gitignore | 0 .../unit/data/writer/libetonyek/pass/Pages_4.pages | Bin 0 -> 42277 bytes .../unit/data/writer/libetonyek/pass/Pages_5.pages | Bin 0 -> 57362 bytes .../qa/unit/data/writer/libmwaw/fail/.gitignore | 0 .../writer/libmwaw/indeterminate/GreatWorks_v2.hqx | 180 ++ .../qa/unit/data/writer/libmwaw/pass/Acta_1.0.hqx | 24 + .../data/writer/libmwaw/pass/BeagleWorks_v1.hqx | 49 + .../unit/data/writer/libmwaw/pass/ClarisWorks_1.0 | Bin 0 -> 7716 bytes .../unit/data/writer/libmwaw/pass/ClarisWorks_2.0 | Bin 0 -> 7779 bytes .../data/writer/libmwaw/pass/ClarisWorks_6.0.cwk | Bin 0 -> 55179 bytes .../unit/data/writer/libmwaw/pass/DOCMaker_4.hqx | 1496 +++++++++++ .../qa/unit/data/writer/libmwaw/pass/FullWrite_1.0 | Bin 0 -> 9688 bytes .../qa/unit/data/writer/libmwaw/pass/FullWrite_2.0 | Bin 0 -> 3274 bytes .../data/writer/libmwaw/pass/HanMac_2.0.4J.hqx | 178 ++ .../data/writer/libmwaw/pass/HanMac_2.0.6K.hqx | 94 + .../qa/unit/data/writer/libmwaw/pass/JazzLotus.hqx | 40 + .../data/writer/libmwaw/pass/LightWayText_4.0.hqx | 16 + .../unit/data/writer/libmwaw/pass/MacDoc_1.0.hqx | 41 + .../qa/unit/data/writer/libmwaw/pass/MacWrite_4.5 | Bin 0 -> 5174 bytes .../unit/data/writer/libmwaw/pass/MacWrite_Pro1.0 | Bin 0 -> 14848 bytes .../data/writer/libmwaw/pass/MarinerWrite_1.6L.hqx | 222 ++ .../data/writer/libmwaw/pass/MarinerWrite_3.5.hqx | Bin 0 -> 57068 bytes .../unit/data/writer/libmwaw/pass/MaxWrite_1.hqx | 12 + .../data/writer/libmwaw/pass/MicrosoftWord_1.0 | Bin 0 -> 3456 bytes .../data/writer/libmwaw/pass/MicrosoftWord_3.0 | Bin 0 -> 1024 bytes .../data/writer/libmwaw/pass/MicrosoftWord_5.0 | Bin 0 -> 40960 bytes .../data/writer/libmwaw/pass/MicrosoftWorks_1.0 | Bin 0 -> 46158 bytes .../data/writer/libmwaw/pass/MicrosoftWorks_2.0 | Bin 0 -> 14490 bytes .../qa/unit/data/writer/libmwaw/pass/MindWrite_2.1 | Bin 0 -> 3402 bytes .../qa/unit/data/writer/libmwaw/pass/More.hqx | 123 + .../unit/data/writer/libmwaw/pass/MouseWrite_1.hqx | 58 + .../data/writer/libmwaw/pass/NisusWriter_4.0.hqx | 206 ++ .../unit/data/writer/libmwaw/pass/RagTime_2.1.hqx | 24 + .../unit/data/writer/libmwaw/pass/RagTime_3.2.hqx | 136 + .../unit/data/writer/libmwaw/pass/RagTime_5.5.rag | Bin 0 -> 14652 bytes .../unit/data/writer/libmwaw/pass/ScriptWriter_1 | Bin 0 -> 1972 bytes .../data/writer/libmwaw/pass/SimpleText_1.0.hqx | 11 + .../data/writer/libmwaw/pass/StudentWritingCenter | Bin 0 -> 1142 bytes .../unit/data/writer/libmwaw/pass/TexEdit_2.0.hqx | 14 + .../qa/unit/data/writer/libmwaw/pass/WordMaker | Bin 0 -> 1064 bytes .../qa/unit/data/writer/libmwaw/pass/WriteNow_2.0 | Bin 0 -> 2632 bytes .../qa/unit/data/writer/libmwaw/pass/WriteNow_4.0 | Bin 0 -> 23755 bytes .../qa/unit/data/writer/libmwaw/pass/WriterPlus | Bin 0 -> 8918 bytes .../qa/unit/data/writer/libmwaw/pass/eDoc_2.0.hqx | 29 + .../unit/data/writer/libstaroffice/fail/.gitignore | 0 .../writer/libstaroffice/indeterminate/.gitignore | 0 .../data/writer/libstaroffice/pass/Writer_3.1.sdw | Bin 0 -> 10752 bytes .../qa/unit/data/writer/libwpd/fail/.gitignore | 0 .../data/writer/libwpd/indeterminate/.gitignore | 0 .../data/writer/libwpd/pass/CVE-2007-1735-1.wpd | Bin 0 -> 1504 bytes .../data/writer/libwpd/pass/CVE-2015-1759-1.wpd | Bin 0 -> 26162 bytes .../data/writer/libwpd/pass/CVE-2015-1760-1.wpd | Bin 0 -> 25459 bytes .../data/writer/libwpd/pass/CVE-2015-1760-2.wpd | Bin 0 -> 17845 bytes .../unit/data/writer/libwpd/pass/EDB-14344-1.wpd | Bin 0 -> 2810 bytes .../qa/unit/data/writer/libwpd/pass/WP1.wpd | Bin 0 -> 64 bytes .../qa/unit/data/writer/libwpd/pass/WP3.wpd | Bin 0 -> 504 bytes .../qa/unit/data/writer/libwpd/pass/WP4.wp | Bin 0 -> 211 bytes .../qa/unit/data/writer/libwpd/pass/WP5.wp | Bin 0 -> 885 bytes .../qa/unit/data/writer/libwpd/pass/WP6.wpd | Bin 0 -> 3587 bytes .../qa/unit/data/writer/libwps/fail/.gitignore | 0 .../data/writer/libwps/indeterminate/.gitignore | 0 .../qa/unit/data/writer/libwps/pass/PocketWord.psw | Bin 0 -> 752 bytes .../unit/data/writer/libwps/pass/Word_5.0_DOS.doc | Bin 0 -> 7168 bytes .../data/writer/libwps/pass/Works_2.00A_DOS.wps | Bin 0 -> 660 bytes .../qa/unit/data/writer/libwps/pass/Works_3.0.wps | Bin 0 -> 3584 bytes .../qa/unit/data/writer/libwps/pass/Works_4.5.wps | Bin 0 -> 4608 bytes .../qa/unit/data/writer/libwps/pass/Works_5.0.wps | Bin 0 -> 6144 bytes .../qa/unit/data/writer/libwps/pass/Works_6.0.wps | Bin 0 -> 13824 bytes .../qa/unit/data/writer/libwps/pass/Write_3.1.wri | Bin 0 -> 176896 bytes .../qa/unit/data/writerperfect-dialogs-test.txt | 38 + writerperfect/qa/unit/stream.cxx | 16 + writerperfect/qa/unit/wpftimport.cxx | 29 + writerperfect/qa/unit/wpftimport.hxx | 30 + writerperfect/qa/unit/wpftqahelperdllapi.h | 21 + .../qa/unit/writerperfect-dialogs-test.cxx | 58 + .../source/calc/MSWorksCalcImportFilter.cxx | 474 ++++ .../source/calc/MSWorksCalcImportFilter.hxx | 45 + writerperfect/source/calc/MWAWCalcImportFilter.cxx | 124 + writerperfect/source/calc/MWAWCalcImportFilter.hxx | 40 + writerperfect/source/calc/NumbersImportFilter.cxx | 65 + writerperfect/source/calc/NumbersImportFilter.hxx | 40 + .../source/calc/StarOfficeCalcImportFilter.cxx | 99 + .../source/calc/StarOfficeCalcImportFilter.hxx | 41 + writerperfect/source/calc/wpftcalc.component | 32 + writerperfect/source/common/DirectoryStream.cxx | 221 ++ writerperfect/source/common/DocumentHandler.cxx | 181 ++ writerperfect/source/common/WPFTEncodingDialog.cxx | 122 + writerperfect/source/common/WPXSvInputStream.cxx | 960 +++++++ writerperfect/source/draw/CDRImportFilter.cxx | 60 + writerperfect/source/draw/CDRImportFilter.hxx | 39 + writerperfect/source/draw/CMXImportFilter.cxx | 60 + writerperfect/source/draw/CMXImportFilter.hxx | 39 + writerperfect/source/draw/FreehandImportFilter.cxx | 56 + writerperfect/source/draw/FreehandImportFilter.hxx | 36 + writerperfect/source/draw/MSPUBImportFilter.cxx | 56 + writerperfect/source/draw/MSPUBImportFilter.hxx | 36 + writerperfect/source/draw/MWAWDrawImportFilter.cxx | 116 + writerperfect/source/draw/MWAWDrawImportFilter.hxx | 41 + .../source/draw/PageMakerImportFilter.cxx | 56 + .../source/draw/PageMakerImportFilter.hxx | 37 + writerperfect/source/draw/QXPImportFilter.cxx | 60 + writerperfect/source/draw/QXPImportFilter.hxx | 36 + .../source/draw/StarOfficeDrawImportFilter.cxx | 101 + .../source/draw/StarOfficeDrawImportFilter.hxx | 42 + writerperfect/source/draw/VisioImportFilter.cxx | 56 + writerperfect/source/draw/VisioImportFilter.hxx | 36 + writerperfect/source/draw/WPGImportFilter.cxx | 62 + writerperfect/source/draw/WPGImportFilter.hxx | 41 + writerperfect/source/draw/ZMFImportFilter.cxx | 60 + writerperfect/source/draw/ZMFImportFilter.hxx | 36 + writerperfect/source/draw/wpftdraw.component | 67 + .../source/impress/KeynoteImportFilter.cxx | 247 ++ .../source/impress/KeynoteImportFilter.hxx | 41 + .../impress/MWAWPresentationImportFilter.cxx | 104 + .../impress/MWAWPresentationImportFilter.hxx | 42 + .../impress/StarOfficePresentationImportFilter.cxx | 102 + .../impress/StarOfficePresentationImportFilter.hxx | 42 + writerperfect/source/impress/wpftimpress.component | 27 + .../source/writer/AbiWordImportFilter.cxx | 58 + .../source/writer/AbiWordImportFilter.hxx | 40 + writerperfect/source/writer/EBookImportFilter.cxx | 114 + writerperfect/source/writer/EBookImportFilter.hxx | 44 + writerperfect/source/writer/EPUBExportDialog.cxx | 224 ++ writerperfect/source/writer/EPUBExportDialog.hxx | 61 + writerperfect/source/writer/EPUBExportFilter.cxx | 206 ++ writerperfect/source/writer/EPUBExportFilter.hxx | 71 + .../source/writer/EPUBExportUIComponent.cxx | 102 + .../source/writer/EPUBExportUIComponent.hxx | 72 + writerperfect/source/writer/EPUBPackage.cxx | 215 ++ writerperfect/source/writer/EPUBPackage.hxx | 90 + .../source/writer/MSWorksImportFilter.cxx | 157 ++ .../source/writer/MSWorksImportFilter.hxx | 41 + writerperfect/source/writer/MWAWImportFilter.cxx | 117 + writerperfect/source/writer/MWAWImportFilter.hxx | 41 + writerperfect/source/writer/PagesImportFilter.cxx | 63 + writerperfect/source/writer/PagesImportFilter.hxx | 40 + .../source/writer/StarOfficeWriterImportFilter.cxx | 128 + .../source/writer/StarOfficeWriterImportFilter.hxx | 42 + .../source/writer/WordPerfectImportFilter.cxx | 238 ++ .../source/writer/WordPerfectImportFilter.hxx | 63 + .../source/writer/exp/XMLBase64ImportContext.cxx | 65 + .../source/writer/exp/XMLBase64ImportContext.hxx | 42 + .../source/writer/exp/XMLFootnoteImportContext.cxx | 126 + .../source/writer/exp/XMLFootnoteImportContext.hxx | 40 + .../source/writer/exp/XMLSectionContext.cxx | 44 + .../source/writer/exp/XMLSectionContext.hxx | 33 + .../source/writer/exp/XMLTextFrameContext.cxx | 171 ++ .../source/writer/exp/XMLTextFrameContext.hxx | 38 + .../source/writer/exp/XMLTextListContext.cxx | 33 + .../source/writer/exp/XMLTextListContext.hxx | 29 + .../source/writer/exp/XMLTextListItemContext.cxx | 36 + .../source/writer/exp/XMLTextListItemContext.hxx | 29 + writerperfect/source/writer/exp/txtparai.cxx | 634 +++++ writerperfect/source/writer/exp/txtparai.hxx | 59 + writerperfect/source/writer/exp/txtstyli.cxx | 415 +++ writerperfect/source/writer/exp/txtstyli.hxx | 60 + writerperfect/source/writer/exp/xmlfmt.cxx | 295 +++ writerperfect/source/writer/exp/xmlfmt.hxx | 73 + writerperfect/source/writer/exp/xmlictxt.cxx | 56 + writerperfect/source/writer/exp/xmlictxt.hxx | 51 + writerperfect/source/writer/exp/xmlimp.cxx | 621 +++++ writerperfect/source/writer/exp/xmlimp.hxx | 149 ++ writerperfect/source/writer/exp/xmlmetai.cxx | 285 +++ writerperfect/source/writer/exp/xmlmetai.hxx | 83 + writerperfect/source/writer/exp/xmltbli.cxx | 254 ++ writerperfect/source/writer/exp/xmltbli.hxx | 44 + writerperfect/source/writer/exp/xmltext.cxx | 55 + writerperfect/source/writer/exp/xmltext.hxx | 34 + writerperfect/source/writer/wpftwriter.component | 72 + .../source/writer/wpftwriter.component.extended | 8 + .../source/writer/wpftwriter.component.extended2 | 12 + writerperfect/uiconfig/ui/exportepub.ui | 538 ++++ writerperfect/uiconfig/ui/wpftencodingdialog.ui | 95 + 432 files changed, 28274 insertions(+) create mode 100644 writerperfect/AllLangMoTarget_wpt.mk create mode 100644 writerperfect/CppunitTest_writerperfect_calc.mk create mode 100644 writerperfect/CppunitTest_writerperfect_dialogs_test.mk create mode 100644 writerperfect/CppunitTest_writerperfect_draw.mk create mode 100644 writerperfect/CppunitTest_writerperfect_epubexport.mk create mode 100644 writerperfect/CppunitTest_writerperfect_import.mk create mode 100644 writerperfect/CppunitTest_writerperfect_impress.mk create mode 100644 writerperfect/CppunitTest_writerperfect_stream.mk create mode 100644 writerperfect/CppunitTest_writerperfect_wpftimport.mk create mode 100644 writerperfect/CppunitTest_writerperfect_writer.mk create mode 100644 writerperfect/IwyuFilter_writerperfect.yaml create mode 100644 writerperfect/Library_wpftcalc.mk create mode 100644 writerperfect/Library_wpftdraw.mk create mode 100644 writerperfect/Library_wpftimpress.mk create mode 100644 writerperfect/Library_wpftqahelper.mk create mode 100644 writerperfect/Library_wpftwriter.mk create mode 100644 writerperfect/Library_writerperfect.mk create mode 100644 writerperfect/Makefile create mode 100644 writerperfect/Module_writerperfect.mk create mode 100644 writerperfect/README.md create mode 100644 writerperfect/UIConfig_writerperfect.mk create mode 100644 writerperfect/UITest_writerperfect_epubexport.mk create mode 100644 writerperfect/inc/DirectoryStream.hxx create mode 100644 writerperfect/inc/DocumentHandler.hxx create mode 100644 writerperfect/inc/DocumentHandlerFor.hxx create mode 100644 writerperfect/inc/DocumentHandlerForOdg.hxx create mode 100644 writerperfect/inc/DocumentHandlerForOdp.hxx create mode 100644 writerperfect/inc/DocumentHandlerForOds.hxx create mode 100644 writerperfect/inc/DocumentHandlerForOdt.hxx create mode 100644 writerperfect/inc/ImportFilter.hxx create mode 100644 writerperfect/inc/WPFTEncodingDialog.hxx create mode 100644 writerperfect/inc/WPFTResMgr.hxx create mode 100644 writerperfect/inc/WPXSvInputStream.hxx create mode 100644 writerperfect/inc/strings.hrc create mode 100644 writerperfect/inc/writerperfectdllapi.h create mode 100644 writerperfect/qa/uitest/epubexport/epubexport.py create mode 100644 writerperfect/qa/unit/DirectoryStreamTest.cxx create mode 100644 writerperfect/qa/unit/DrawingImportTest.cxx create mode 100644 writerperfect/qa/unit/EPUBExportTest.cxx create mode 100644 writerperfect/qa/unit/ImportTest.cxx create mode 100644 writerperfect/qa/unit/PresentationImportTest.cxx create mode 100644 writerperfect/qa/unit/SpreadsheetImportTest.cxx create mode 100644 writerperfect/qa/unit/TextImportTest.cxx create mode 100644 writerperfect/qa/unit/WPXSvStreamTest.cxx create mode 100644 writerperfect/qa/unit/WpftCalcFilterTest.cxx create mode 100644 writerperfect/qa/unit/WpftDrawFilterTest.cxx create mode 100644 writerperfect/qa/unit/WpftFilterFixture.cxx create mode 100644 writerperfect/qa/unit/WpftFilterFixture.hxx create mode 100644 writerperfect/qa/unit/WpftFilterTestBase.cxx create mode 100644 writerperfect/qa/unit/WpftFilterTestBase.hxx create mode 100644 writerperfect/qa/unit/WpftImpressFilterTest.cxx create mode 100644 writerperfect/qa/unit/WpftLoader.cxx create mode 100644 writerperfect/qa/unit/WpftLoader.hxx create mode 100644 writerperfect/qa/unit/WpftWriterFilterTest.cxx create mode 100644 writerperfect/qa/unit/data/calc/libetonyek/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libetonyek/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libetonyek/pass/Numbers_2.numbers create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_2.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_2.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_DB_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisResolve_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_2.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_4.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_5.0.cwk create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_6.0.cwk create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB.cwk create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_2.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_4.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_5.0.cwk create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/JazzLotus.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_2.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_3.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_4.0.wk4 create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_2.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_3.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_4.0.wdb create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/Multiplan_1.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/Wingz_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_DB_1.0.hqx create mode 100644 writerperfect/qa/unit/data/calc/libstaroffice/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libstaroffice/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libstaroffice/pass/Calc_3.1.sdc create mode 100644 writerperfect/qa/unit/data/calc/libwps/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libwps/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Lotus.wk1 create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_3.123 create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_98.123 create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Multiplan_3 create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wb1 create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wq1 create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wdb create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wks create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wdb create mode 100644 writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wks create mode 100644 writerperfect/qa/unit/data/draw/libcdr-cmx/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libcdr-cmx/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libcdr-cmx/pass/fdo63782-1.cmx create mode 100644 writerperfect/qa/unit/data/draw/libcdr/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libcdr/fail/EDB-35217-1.cdr create mode 100644 writerperfect/qa/unit/data/draw/libcdr/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libcdr/pass/EDB-35217-2.cdr create mode 100644 writerperfect/qa/unit/data/draw/libcdr/pass/fdo65220-2.cdr create mode 100644 writerperfect/qa/unit/data/draw/libfreehand/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libfreehand/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libfreehand/pass/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libmspub/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libmspub/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22310-1.pub create mode 100644 writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22655-1.pub create mode 100644 writerperfect/qa/unit/data/draw/libmspub/pass/EDB-29664-1.pub create mode 100644 writerperfect/qa/unit/data/draw/libmspub/pass/fdo59355-1.pub create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_2.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_P_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_P_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/Canvas_2.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisDraw.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_2.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_4.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_5.0.cwk create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_6.0.cwk create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_10 create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_3_win.rif create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.1.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/DrawingTable_1.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_2.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_5.5.drw create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_1.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_II.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_Pro_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_2.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_3.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_4.0.msw create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/ReadySetGo_1 create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/Scoop_1 create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_P_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_P_1.0.hqx create mode 100644 writerperfect/qa/unit/data/draw/libpagemaker/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libpagemaker/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libpagemaker/pass/shapes.pmd create mode 100644 writerperfect/qa/unit/data/draw/libstaroffice/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libstaroffice/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libstaroffice/pass/Draw_3.1.sda create mode 100644 writerperfect/qa/unit/data/draw/libvisio/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libvisio/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libvisio/pass/EDB-22679-1.vsd create mode 100644 writerperfect/qa/unit/data/draw/libvisio/pass/fdo57117-1.vsd create mode 100644 writerperfect/qa/unit/data/draw/libwpg/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libwpg/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libwpg/pass/WPG1.wpg create mode 100644 writerperfect/qa/unit/data/draw/libzmf/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libzmf/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/draw/libzmf/pass/ZonerDraw_5.zmf create mode 100644 writerperfect/qa/unit/data/import/SOLVE.FM3 create mode 100644 writerperfect/qa/unit/data/import/SOLVE.WK3 create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_1.key create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_2.key create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_3.key create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_4.key create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_5.key create mode 100644 writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_6.key create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/ClarisWorks_6.0.cwk create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_2.ppt create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_3.ppt create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_4.ppt create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_7.ppt create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_1 create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_2 create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_3 create mode 100644 writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_4.ppt create mode 100644 writerperfect/qa/unit/data/stream/fdo40686-1.doc create mode 100644 writerperfect/qa/unit/data/stream/test.dir/META-INF/manifest.xml create mode 100644 writerperfect/qa/unit/data/stream/test.dir/Thumbnails/thumbnail.png create mode 100644 writerperfect/qa/unit/data/stream/test.dir/content.xml create mode 100644 writerperfect/qa/unit/data/stream/test.dir/manifest.rdf create mode 100644 writerperfect/qa/unit/data/stream/test.dir/meta.xml create mode 100644 writerperfect/qa/unit/data/stream/test.dir/mimetype create mode 100644 writerperfect/qa/unit/data/stream/test.dir/settings.xml create mode 100644 writerperfect/qa/unit/data/stream/test.dir/styles.xml create mode 100644 writerperfect/qa/unit/data/stream/test.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/2pages.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/abi11105.abw create mode 100644 writerperfect/qa/unit/data/writer/epubexport/char-namedstyle.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/escape.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/font-embedding.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/footnote.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/fxl-2page.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/hello.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/image-border.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/image-link.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/image-nospan.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/image.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/line-break.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/link-charformat.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/link-invalid.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/link-namedcharformat.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/link.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/list.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/meta-xmp.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/meta-xmp/metadata.xmp create mode 100644 writerperfect/qa/unit/data/writer/epubexport/meta.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/meta/cover.png create mode 100644 writerperfect/qa/unit/data/writer/epubexport/named-style-inheritance.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/nested-span.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/outline-level.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/para-autostyle-char-props.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/para-char-props.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/para-namedstyle.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/popup-api.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/popup-media.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/popup-media/libreoffice.png create mode 100644 writerperfect/qa/unit/data/writer/epubexport/popup.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/popup/libreoffice.png create mode 100644 writerperfect/qa/unit/data/writer/epubexport/section.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/simple-ruby.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/span-autostyle.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/table-cell-border.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/table-cell-width.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/table-row-height.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/table-row-span.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/table-width.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/table.fodt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/tdf115623-many-pagespans.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/tdf115623-single-writing-mode.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/tdf115623-split-by-chapter.odt create mode 100644 writerperfect/qa/unit/data/writer/epubexport/text-box.fodt create mode 100644 writerperfect/qa/unit/data/writer/libabw/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libabw/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libabw/pass/hello.abw create mode 100644 writerperfect/qa/unit/data/writer/libabw/pass/hello.zabw create mode 100644 writerperfect/qa/unit/data/writer/libe-book/fail/TCR.tcr create mode 100644 writerperfect/qa/unit/data/writer/libe-book/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/Broad_Band_eBook.lrf create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2 create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2.zip create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/PalmDOC.pdb create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/PeanutPress.pdb create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/Plucker.pdb create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/TealDoc.pdb create mode 100644 writerperfect/qa/unit/data/writer/libe-book/pass/zTXT.pdb create mode 100644 writerperfect/qa/unit/data/writer/libetonyek/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libetonyek/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_4.pages create mode 100644 writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_5.pages create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/indeterminate/GreatWorks_v2.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/Acta_1.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/BeagleWorks_v1.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_1.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_2.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_6.0.cwk create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/DOCMaker_4.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_1.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_2.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.4J.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.6K.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/JazzLotus.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/LightWayText_4.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MacDoc_1.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_4.5 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_Pro1.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_1.6L.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_3.5.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MaxWrite_1.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_1.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_3.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_5.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_1.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_2.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MindWrite_2.1 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/More.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/MouseWrite_1.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/NisusWriter_4.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_2.1.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_3.2.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_5.5.rag create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/ScriptWriter_1 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/SimpleText_1.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/StudentWritingCenter create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/TexEdit_2.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/WordMaker create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_2.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_4.0 create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/WriterPlus create mode 100644 writerperfect/qa/unit/data/writer/libmwaw/pass/eDoc_2.0.hqx create mode 100644 writerperfect/qa/unit/data/writer/libstaroffice/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libstaroffice/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libstaroffice/pass/Writer_3.1.sdw create mode 100644 writerperfect/qa/unit/data/writer/libwpd/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libwpd/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2007-1735-1.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1759-1.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-1.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-2.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/EDB-14344-1.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/WP1.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/WP3.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/WP4.wp create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/WP5.wp create mode 100644 writerperfect/qa/unit/data/writer/libwpd/pass/WP6.wpd create mode 100644 writerperfect/qa/unit/data/writer/libwps/fail/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libwps/indeterminate/.gitignore create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/PocketWord.psw create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Word_5.0_DOS.doc create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Works_2.00A_DOS.wps create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Works_3.0.wps create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Works_4.5.wps create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Works_5.0.wps create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Works_6.0.wps create mode 100644 writerperfect/qa/unit/data/writer/libwps/pass/Write_3.1.wri create mode 100644 writerperfect/qa/unit/data/writerperfect-dialogs-test.txt create mode 100644 writerperfect/qa/unit/stream.cxx create mode 100644 writerperfect/qa/unit/wpftimport.cxx create mode 100644 writerperfect/qa/unit/wpftimport.hxx create mode 100644 writerperfect/qa/unit/wpftqahelperdllapi.h create mode 100644 writerperfect/qa/unit/writerperfect-dialogs-test.cxx create mode 100644 writerperfect/source/calc/MSWorksCalcImportFilter.cxx create mode 100644 writerperfect/source/calc/MSWorksCalcImportFilter.hxx create mode 100644 writerperfect/source/calc/MWAWCalcImportFilter.cxx create mode 100644 writerperfect/source/calc/MWAWCalcImportFilter.hxx create mode 100644 writerperfect/source/calc/NumbersImportFilter.cxx create mode 100644 writerperfect/source/calc/NumbersImportFilter.hxx create mode 100644 writerperfect/source/calc/StarOfficeCalcImportFilter.cxx create mode 100644 writerperfect/source/calc/StarOfficeCalcImportFilter.hxx create mode 100644 writerperfect/source/calc/wpftcalc.component create mode 100644 writerperfect/source/common/DirectoryStream.cxx create mode 100644 writerperfect/source/common/DocumentHandler.cxx create mode 100644 writerperfect/source/common/WPFTEncodingDialog.cxx create mode 100644 writerperfect/source/common/WPXSvInputStream.cxx create mode 100644 writerperfect/source/draw/CDRImportFilter.cxx create mode 100644 writerperfect/source/draw/CDRImportFilter.hxx create mode 100644 writerperfect/source/draw/CMXImportFilter.cxx create mode 100644 writerperfect/source/draw/CMXImportFilter.hxx create mode 100644 writerperfect/source/draw/FreehandImportFilter.cxx create mode 100644 writerperfect/source/draw/FreehandImportFilter.hxx create mode 100644 writerperfect/source/draw/MSPUBImportFilter.cxx create mode 100644 writerperfect/source/draw/MSPUBImportFilter.hxx create mode 100644 writerperfect/source/draw/MWAWDrawImportFilter.cxx create mode 100644 writerperfect/source/draw/MWAWDrawImportFilter.hxx create mode 100644 writerperfect/source/draw/PageMakerImportFilter.cxx create mode 100644 writerperfect/source/draw/PageMakerImportFilter.hxx create mode 100644 writerperfect/source/draw/QXPImportFilter.cxx create mode 100644 writerperfect/source/draw/QXPImportFilter.hxx create mode 100644 writerperfect/source/draw/StarOfficeDrawImportFilter.cxx create mode 100644 writerperfect/source/draw/StarOfficeDrawImportFilter.hxx create mode 100644 writerperfect/source/draw/VisioImportFilter.cxx create mode 100644 writerperfect/source/draw/VisioImportFilter.hxx create mode 100644 writerperfect/source/draw/WPGImportFilter.cxx create mode 100644 writerperfect/source/draw/WPGImportFilter.hxx create mode 100644 writerperfect/source/draw/ZMFImportFilter.cxx create mode 100644 writerperfect/source/draw/ZMFImportFilter.hxx create mode 100644 writerperfect/source/draw/wpftdraw.component create mode 100644 writerperfect/source/impress/KeynoteImportFilter.cxx create mode 100644 writerperfect/source/impress/KeynoteImportFilter.hxx create mode 100644 writerperfect/source/impress/MWAWPresentationImportFilter.cxx create mode 100644 writerperfect/source/impress/MWAWPresentationImportFilter.hxx create mode 100644 writerperfect/source/impress/StarOfficePresentationImportFilter.cxx create mode 100644 writerperfect/source/impress/StarOfficePresentationImportFilter.hxx create mode 100644 writerperfect/source/impress/wpftimpress.component create mode 100644 writerperfect/source/writer/AbiWordImportFilter.cxx create mode 100644 writerperfect/source/writer/AbiWordImportFilter.hxx create mode 100644 writerperfect/source/writer/EBookImportFilter.cxx create mode 100644 writerperfect/source/writer/EBookImportFilter.hxx create mode 100644 writerperfect/source/writer/EPUBExportDialog.cxx create mode 100644 writerperfect/source/writer/EPUBExportDialog.hxx create mode 100644 writerperfect/source/writer/EPUBExportFilter.cxx create mode 100644 writerperfect/source/writer/EPUBExportFilter.hxx create mode 100644 writerperfect/source/writer/EPUBExportUIComponent.cxx create mode 100644 writerperfect/source/writer/EPUBExportUIComponent.hxx create mode 100644 writerperfect/source/writer/EPUBPackage.cxx create mode 100644 writerperfect/source/writer/EPUBPackage.hxx create mode 100644 writerperfect/source/writer/MSWorksImportFilter.cxx create mode 100644 writerperfect/source/writer/MSWorksImportFilter.hxx create mode 100644 writerperfect/source/writer/MWAWImportFilter.cxx create mode 100644 writerperfect/source/writer/MWAWImportFilter.hxx create mode 100644 writerperfect/source/writer/PagesImportFilter.cxx create mode 100644 writerperfect/source/writer/PagesImportFilter.hxx create mode 100644 writerperfect/source/writer/StarOfficeWriterImportFilter.cxx create mode 100644 writerperfect/source/writer/StarOfficeWriterImportFilter.hxx create mode 100644 writerperfect/source/writer/WordPerfectImportFilter.cxx create mode 100644 writerperfect/source/writer/WordPerfectImportFilter.hxx create mode 100644 writerperfect/source/writer/exp/XMLBase64ImportContext.cxx create mode 100644 writerperfect/source/writer/exp/XMLBase64ImportContext.hxx create mode 100644 writerperfect/source/writer/exp/XMLFootnoteImportContext.cxx create mode 100644 writerperfect/source/writer/exp/XMLFootnoteImportContext.hxx create mode 100644 writerperfect/source/writer/exp/XMLSectionContext.cxx create mode 100644 writerperfect/source/writer/exp/XMLSectionContext.hxx create mode 100644 writerperfect/source/writer/exp/XMLTextFrameContext.cxx create mode 100644 writerperfect/source/writer/exp/XMLTextFrameContext.hxx create mode 100644 writerperfect/source/writer/exp/XMLTextListContext.cxx create mode 100644 writerperfect/source/writer/exp/XMLTextListContext.hxx create mode 100644 writerperfect/source/writer/exp/XMLTextListItemContext.cxx create mode 100644 writerperfect/source/writer/exp/XMLTextListItemContext.hxx create mode 100644 writerperfect/source/writer/exp/txtparai.cxx create mode 100644 writerperfect/source/writer/exp/txtparai.hxx create mode 100644 writerperfect/source/writer/exp/txtstyli.cxx create mode 100644 writerperfect/source/writer/exp/txtstyli.hxx create mode 100644 writerperfect/source/writer/exp/xmlfmt.cxx create mode 100644 writerperfect/source/writer/exp/xmlfmt.hxx create mode 100644 writerperfect/source/writer/exp/xmlictxt.cxx create mode 100644 writerperfect/source/writer/exp/xmlictxt.hxx create mode 100644 writerperfect/source/writer/exp/xmlimp.cxx create mode 100644 writerperfect/source/writer/exp/xmlimp.hxx create mode 100644 writerperfect/source/writer/exp/xmlmetai.cxx create mode 100644 writerperfect/source/writer/exp/xmlmetai.hxx create mode 100644 writerperfect/source/writer/exp/xmltbli.cxx create mode 100644 writerperfect/source/writer/exp/xmltbli.hxx create mode 100644 writerperfect/source/writer/exp/xmltext.cxx create mode 100644 writerperfect/source/writer/exp/xmltext.hxx create mode 100644 writerperfect/source/writer/wpftwriter.component create mode 100644 writerperfect/source/writer/wpftwriter.component.extended create mode 100644 writerperfect/source/writer/wpftwriter.component.extended2 create mode 100644 writerperfect/uiconfig/ui/exportepub.ui create mode 100644 writerperfect/uiconfig/ui/wpftencodingdialog.ui (limited to 'writerperfect') diff --git a/writerperfect/AllLangMoTarget_wpt.mk b/writerperfect/AllLangMoTarget_wpt.mk new file mode 100644 index 000000000..433bb66e8 --- /dev/null +++ b/writerperfect/AllLangMoTarget_wpt.mk @@ -0,0 +1,13 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +$(eval $(call gb_AllLangMoTarget_AllLangMoTarget,wpt)) + +$(eval $(call gb_AllLangMoTarget_set_polocation,wpt,writerperfect)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_calc.mk b/writerperfect/CppunitTest_writerperfect_calc.mk new file mode 100644 index 000000000..54647a34a --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_calc.mk @@ -0,0 +1,42 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_calc)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_calc,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_calc)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_calc,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + test \ + tl \ + ucbhelper \ + unotest \ + wpftqahelper \ +)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_calc)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_calc)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_calc,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_calc)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_calc,\ + writerperfect/qa/unit/WpftCalcFilterTest \ +)) + +$(call gb_CppunitTest_get_target,writerperfect_calc): \ + $(call gb_Library_get_target,ipb) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_dialogs_test.mk b/writerperfect/CppunitTest_writerperfect_dialogs_test.mk new file mode 100644 index 000000000..1052d7700 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_dialogs_test.mk @@ -0,0 +1,68 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +#************************************************************************* +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +#************************************************************************* + +$(eval $(call gb_CppunitTest_CppunitScreenShot,writerperfect_dialogs_test)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_dialogs_test, \ + writerperfect/qa/unit/writerperfect-dialogs-test \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_dialogs_test)) + +$(eval $(call gb_CppunitTest_set_include,desktop_dialogs_test,\ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_dialogs_test, \ + basegfx \ + comphelper \ + cppu \ + cppuhelper \ + drawinglayer \ + editeng \ + i18nlangtag \ + i18nutil \ + msfilter \ + oox \ + sal \ + salhelper \ + sax \ + sfx \ + sot \ + svl \ + svt \ + test \ + tl \ + tk \ + ucbhelper \ + unotest \ + utl \ + vcl \ + xo \ +)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_dialogs_test,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_dialogs_test)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_dialogs_test)) +$(eval $(call gb_CppunitTest_use_vcl_non_headless_with_windows,writerperfect_dialogs_test)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_dialogs_test,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_dialogs_test)) + +$(eval $(call gb_CppunitTest_use_uiconfigs,writerperfect_dialogs_test,\ + writerperfect \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_draw.mk b/writerperfect/CppunitTest_writerperfect_draw.mk new file mode 100644 index 000000000..cccbafbf1 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_draw.mk @@ -0,0 +1,39 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_draw)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_draw,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_draw)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_draw,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + test \ + tl \ + ucbhelper \ + unotest \ + wpftqahelper \ +)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_draw)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_draw)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_draw,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_draw)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_draw,\ + writerperfect/qa/unit/WpftDrawFilterTest \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_epubexport.mk b/writerperfect/CppunitTest_writerperfect_epubexport.mk new file mode 100644 index 000000000..d634e59b8 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_epubexport.mk @@ -0,0 +1,48 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_epubexport)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_epubexport, \ + writerperfect/qa/unit/EPUBExportTest \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_epubexport)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_epubexport, \ + comphelper \ + cppu \ + cppuhelper \ + sal \ + test \ + tl \ + unotest \ + utl \ + wpftwriter \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_use_externals,writerperfect_epubexport,\ + epubgen \ + libxml2 \ + revenge \ +)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_epubexport,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_epubexport)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_epubexport)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_epubexport)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_epubexport,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_epubexport)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_import.mk b/writerperfect/CppunitTest_writerperfect_import.mk new file mode 100644 index 000000000..fe47a54c8 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_import.mk @@ -0,0 +1,41 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_import)) + +$(eval $(call gb_CppunitTest_add_defs,writerperfect_import,\ + -DTEST_DIR=\"writerperfect/qa/unit/data/import\" \ +)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_import,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_import)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_import,\ + comphelper \ + cppu \ + sal \ + test \ + unotest \ + utl \ + wpftqahelper \ +)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_import)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_import)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_import,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_import)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_import,\ + writerperfect/qa/unit/ImportTest \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_impress.mk b/writerperfect/CppunitTest_writerperfect_impress.mk new file mode 100644 index 000000000..c41e6e2f3 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_impress.mk @@ -0,0 +1,39 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_impress)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_impress,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_impress)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_impress,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + test \ + tl \ + ucbhelper \ + unotest \ + wpftqahelper \ +)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_impress)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_impress)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_impress,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_impress)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_impress,\ + writerperfect/qa/unit/WpftImpressFilterTest \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_stream.mk b/writerperfect/CppunitTest_writerperfect_stream.mk new file mode 100644 index 000000000..e1e637531 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_stream.mk @@ -0,0 +1,59 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_stream)) + +$(eval $(call gb_CppunitTest_set_include,writerperfect_stream,\ + -I$(SRCDIR)/writerperfect/source/common \ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_stream)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_stream)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_stream)) + +$(eval $(call gb_CppunitTest_use_externals,writerperfect_stream,\ + boost_headers \ + revenge \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_stream,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + sot \ + test \ + tl \ + ucbhelper \ + unotest \ + utl \ + writerperfect \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_stream)) + +$(eval $(call gb_CppunitTest_use_components,writerperfect_stream,\ + configmgr/source/configmgr \ + i18npool/util/i18npool \ + package/util/package2 \ + ucb/source/core/ucb1 \ + ucb/source/ucp/file/ucpfile1 \ + unotools/util/utl \ +)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_stream,\ + writerperfect/qa/unit/DirectoryStreamTest \ + writerperfect/qa/unit/WPXSvStreamTest \ + writerperfect/qa/unit/stream \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_wpftimport.mk b/writerperfect/CppunitTest_writerperfect_wpftimport.mk new file mode 100644 index 000000000..b43836d45 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_wpftimport.mk @@ -0,0 +1,57 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_wpftimport)) + +$(eval $(call gb_CppunitTest_set_include,writerperfect_wpftimport,\ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_externals,writerperfect_wpftimport,\ + odfgen \ + revenge \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_wpftimport)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_wpftimport,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + test \ + unotest \ + utl \ + vcl \ + wpftqahelper \ + writerperfect \ + xo \ +)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_wpftimport,boost_headers)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_wpftimport)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_wpftimport)) + +$(eval $(call gb_CppunitTest_use_rdbs,writerperfect_wpftimport,\ + services \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_wpftimport)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_wpftimport,\ + writerperfect/qa/unit/DrawingImportTest \ + writerperfect/qa/unit/PresentationImportTest \ + writerperfect/qa/unit/SpreadsheetImportTest \ + writerperfect/qa/unit/TextImportTest \ + writerperfect/qa/unit/wpftimport \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/CppunitTest_writerperfect_writer.mk b/writerperfect/CppunitTest_writerperfect_writer.mk new file mode 100644 index 000000000..254d5e559 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_writer.mk @@ -0,0 +1,43 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_writer)) + +$(eval $(call gb_CppunitTest_use_external,writerperfect_writer,boost_headers)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_writer)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_writer,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + test \ + tl \ + ucbhelper \ + unotest \ + wpftqahelper \ +)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_writer)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_writer)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_writer,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_writer)) + +$(eval $(call gb_CppunitTest_use_uiconfigs,writerperfect_writer,\ + modules/swriter \ +)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_writer,\ + writerperfect/qa/unit/WpftWriterFilterTest \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/IwyuFilter_writerperfect.yaml b/writerperfect/IwyuFilter_writerperfect.yaml new file mode 100644 index 000000000..3660606f0 --- /dev/null +++ b/writerperfect/IwyuFilter_writerperfect.yaml @@ -0,0 +1,202 @@ +--- +assumeFilename: writerperfect/source/common/WPXSvInputStream.cxx +excludelist: + writerperfect/inc/DocumentHandler.hxx: + # Wrapper header for external library + - libodfgen/libodfgen.hxx + writerperfect/inc/DocumentHandlerForOdt.hxx: + # Wrapper header for external library + - libodfgen/libodfgen.hxx + writerperfect/inc/DocumentHandlerForOdg.hxx: + # Wrapper header for external library + - libodfgen/libodfgen.hxx + writerperfect/inc/DocumentHandlerForOds.hxx: + # Wrapper header for external library + - libodfgen/libodfgen.hxx + writerperfect/inc/DocumentHandlerForOdp.hxx: + # Wrapper header for external library + - libodfgen/libodfgen.hxx + writerperfect/inc/DirectoryStream.hxx: + # Wrapper header for external library + - librevenge-stream/librevenge-stream.h + writerperfect/inc/WPXSvInputStream.hxx: + # Wrapper header for external library + - librevenge-stream/librevenge-stream.h + writerperfect/source/calc/NumbersImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOds.hxx + writerperfect/source/calc/MWAWCalcImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOds.hxx + writerperfect/source/calc/StarOfficeCalcImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOds.hxx + writerperfect/source/calc/MSWorksCalcImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOds.hxx + writerperfect/source/draw/CDRImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/StarOfficeDrawImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/PageMakerImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/ZMFImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/CMXImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/QXPImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/MWAWDrawImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/WPGImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/MSPUBImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/VisioImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/draw/FreehandImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/source/impress/MWAWPresentationImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdp.hxx + writerperfect/source/impress/StarOfficePresentationImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdp.hxx + writerperfect/source/impress/KeynoteImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdp.hxx + writerperfect/source/writer/EBookImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/source/writer/MSWorksImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/source/writer/StarOfficeWriterImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/source/writer/PagesImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/source/writer/AbiWordImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/source/writer/MWAWImportFilter.hxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/qa/unit/WpftLoader.cxx: + # Actually used + - com/sun/star/beans/PropertyValue.hpp + - com/sun/star/container/XNameAccess.hpp + - com/sun/star/document/XFilter.hpp + - com/sun/star/frame/XDesktop2.hpp + - com/sun/star/io/XInputStream.hpp + - com/sun/star/uno/XComponentContext.hpp + # Needed for UnoType template instantiation + - com/sun/star/ucb/XContent.hpp + writerperfect/qa/unit/DrawingImportTest.cxx: + # Needed for direct member access + - DocumentHandlerForOdg.hxx + writerperfect/qa/unit/SpreadsheetImportTest.cxx: + # Needed for direct member access + - DocumentHandlerForOds.hxx + writerperfect/qa/unit/PresentationImportTest.cxx: + # Needed for direct member access + - DocumentHandlerForOdp.hxx + writerperfect/qa/unit/TextImportTest.cxx: + # Needed for direct member access + - DocumentHandlerForOdt.hxx + writerperfect/source/common/DocumentHandler.cxx: + # Actually used + - com/sun/star/xml/sax/XDocumentHandler.hpp + writerperfect/source/calc/NumbersImportFilter.cxx: + # Wrapper header for external library + - libetonyek/libetonyek.h + writerperfect/source/calc/MWAWCalcImportFilter.cxx: + # Wrapper header for external library + - libmwaw/libmwaw.hxx + writerperfect/source/calc/StarOfficeCalcImportFilter.cxx: + # Wrapper header for external library + - libstaroffice/libstaroffice.hxx + writerperfect/source/calc/MSWorksCalcImportFilter.cxx: + # Wrapper header for external library + - libwps/libwps.h + writerperfect/source/draw/CDRImportFilter.cxx: + # Wrapper header for external library + - libcdr/libcdr.h + writerperfect/source/draw/CMXImportFilter.cxx: + # Wrapper header for external library + - libcdr/libcdr.h + writerperfect/source/draw/FreehandImportFilter.cxx: + # Wrapper header for external library + - libfreehand/libfreehand.h + writerperfect/source/draw/MWAWDrawImportFilter.cxx: + # Wrapper header for external library + - libmwaw/libmwaw.hxx + writerperfect/source/draw/MSPUBImportFilter.cxx: + # Wrapper header for external library + - libmspub/libmspub.h + writerperfect/source/draw/PageMakerImportFilter.cxx: + # Wrapper header for external library + - libpagemaker/libpagemaker.h + writerperfect/source/draw/StarOfficeDrawImportFilter.cxx: + # Wrapper header for external library + - libstaroffice/libstaroffice.hxx + writerperfect/source/draw/VisioImportFilter.cxx: + # Wrapper header for external library + - libvisio/libvisio.h + writerperfect/source/draw/QXPImportFilter.cxx: + # Wrapper header for external library + - libqxp/libqxp.h + writerperfect/source/draw/WPGImportFilter.cxx: + # Wrapper header for external library + - libwpg/libwpg.h + writerperfect/source/draw/ZMFImportFilter.cxx: + # Wrapper header for external library + - libzmf/libzmf.h + writerperfect/source/impress/MWAWPresentationImportFilter.cxx: + # Wrapper header for external library + - libmwaw/libmwaw.hxx + writerperfect/source/impress/StarOfficePresentationImportFilter.cxx: + # Wrapper header for external library + - libstaroffice/libstaroffice.hxx + writerperfect/source/impress/KeynoteImportFilter.cxx: + # Wrapper header for external library + - libetonyek/libetonyek.h + writerperfect/source/writer/PagesImportFilter.cxx: + # Wrapper header for external library + - libetonyek/libetonyek.h + writerperfect/source/writer/MWAWImportFilter.cxx: + # Wrapper header for external library + - libmwaw/libmwaw.hxx + writerperfect/source/writer/MSWorksImportFilter.cxx: + # Wrapper header for external library + - libwps/libwps.h + writerperfect/source/writer/WordPerfectImportFilter.cxx: + # Wrapper header for external library + - libwpd/libwpd.h + - libwpg/libwpg.h + writerperfect/source/writer/StarOfficeWriterImportFilter.cxx: + # Wrapper header for external library + - libstaroffice/libstaroffice.hxx + writerperfect/source/writer/AbiWordImportFilter.cxx: + # Wrapper header for external library + - libabw/libabw.h + writerperfect/source/writer/EBookImportFilter.cxx: + # Wrapper header for external library + - libe-book/libe-book.h + writerperfect/source/writer/EPUBExportFilter.cxx: + # Actually used + - com/sun/star/uno/XComponentContext.hpp + writerperfect/source/writer/EPUBPackage.cxx: + - com/sun/star/embed/XStorage.hpp diff --git a/writerperfect/Library_wpftcalc.mk b/writerperfect/Library_wpftcalc.mk new file mode 100644 index 000000000..1ff7398c5 --- /dev/null +++ b/writerperfect/Library_wpftcalc.mk @@ -0,0 +1,70 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_Library_Library,wpftcalc)) + +$(eval $(call gb_Library_set_include,wpftcalc,\ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_set_componentfile,wpftcalc,writerperfect/source/calc/wpftcalc,services)) + +$(eval $(call gb_Library_use_sdk_api,wpftcalc)) + +$(eval $(call gb_Library_use_libraries,wpftcalc,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + sfx \ + sot \ + svx \ + tl \ + ucbhelper \ + utl \ + vcl \ + writerperfect \ + xo \ +)) + +$(eval $(call gb_Library_use_externals,wpftcalc,\ + boost_headers \ + etonyek \ + odfgen \ + revenge \ + mwaw \ + staroffice \ + wps \ + zlib \ + lcms2 \ + libxml2 \ + icu_headers \ + icui18n \ + icuuc \ +)) + +$(eval $(call gb_Library_add_exception_objects,wpftcalc,\ + writerperfect/source/calc/MSWorksCalcImportFilter \ + writerperfect/source/calc/MWAWCalcImportFilter \ + writerperfect/source/calc/NumbersImportFilter \ + writerperfect/source/calc/StarOfficeCalcImportFilter \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Library_wpftdraw.mk b/writerperfect/Library_wpftdraw.mk new file mode 100644 index 000000000..340cb889b --- /dev/null +++ b/writerperfect/Library_wpftdraw.mk @@ -0,0 +1,85 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_Library_Library,wpftdraw)) + +$(eval $(call gb_Library_set_include,wpftdraw,\ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_set_componentfile,wpftdraw,writerperfect/source/draw/wpftdraw,services)) + +$(eval $(call gb_Library_use_sdk_api,wpftdraw)) + +$(eval $(call gb_Library_use_common_precompiled_header,wpftdraw)) + +$(eval $(call gb_Library_use_libraries,wpftdraw,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + sot \ + svx \ + tl \ + utl \ + vcl \ + writerperfect \ + xo \ +)) + +$(eval $(call gb_Library_use_externals,wpftdraw,\ + boost_headers \ + cdr \ + freehand \ + mspub \ + mwaw \ + odfgen \ + zmf \ + libpng \ + pagemaker \ + qxp \ + revenge \ + staroffice \ + visio \ + wpg \ + wpd \ + zlib \ + lcms2 \ + libxml2 \ + icu_headers \ + icui18n \ + icuuc \ +)) + +$(eval $(call gb_Library_add_exception_objects,wpftdraw,\ + writerperfect/source/draw/CDRImportFilter \ + writerperfect/source/draw/CMXImportFilter \ + writerperfect/source/draw/FreehandImportFilter \ + writerperfect/source/draw/MSPUBImportFilter \ + writerperfect/source/draw/MWAWDrawImportFilter \ + writerperfect/source/draw/PageMakerImportFilter \ + writerperfect/source/draw/QXPImportFilter \ + writerperfect/source/draw/StarOfficeDrawImportFilter \ + writerperfect/source/draw/VisioImportFilter \ + writerperfect/source/draw/WPGImportFilter \ + writerperfect/source/draw/ZMFImportFilter \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Library_wpftimpress.mk b/writerperfect/Library_wpftimpress.mk new file mode 100644 index 000000000..9547faecd --- /dev/null +++ b/writerperfect/Library_wpftimpress.mk @@ -0,0 +1,63 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_Library_Library,wpftimpress)) + +$(eval $(call gb_Library_set_include,wpftimpress,\ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_set_componentfile,wpftimpress,writerperfect/source/impress/wpftimpress,services)) + +$(eval $(call gb_Library_use_sdk_api,wpftimpress)) + +$(eval $(call gb_Library_use_libraries,wpftimpress,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + sot \ + svx \ + tl \ + ucbhelper \ + utl \ + vcl \ + writerperfect \ + xo \ +)) + +$(eval $(call gb_Library_use_externals,wpftimpress,\ + boost_headers \ + etonyek \ + mwaw \ + odfgen \ + staroffice \ + revenge \ + zlib \ + libxml2 \ +)) + +$(eval $(call gb_Library_add_exception_objects,wpftimpress,\ + writerperfect/source/impress/KeynoteImportFilter \ + writerperfect/source/impress/MWAWPresentationImportFilter \ + writerperfect/source/impress/StarOfficePresentationImportFilter \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Library_wpftqahelper.mk b/writerperfect/Library_wpftqahelper.mk new file mode 100644 index 000000000..d6750e050 --- /dev/null +++ b/writerperfect/Library_wpftqahelper.mk @@ -0,0 +1,43 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Library_Library,wpftqahelper)) + +$(eval $(call gb_Library_set_include,wpftqahelper,\ + -I$(SRCDIR)/writerperfect/qa/unit \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_add_defs,wpftqahelper,\ + -DWPFTQAHELPER_DLLIMPLEMENTATION \ +)) + +$(eval $(call gb_Library_use_externals,wpftqahelper,\ + boost_headers \ + cppunit \ +)) + +$(eval $(call gb_Library_use_sdk_api,wpftqahelper)) + +$(eval $(call gb_Library_use_libraries,wpftqahelper,\ + cppu \ + sal \ + test \ + tl \ + ucbhelper \ + unotest \ +)) + +$(eval $(call gb_Library_add_exception_objects,wpftqahelper,\ + writerperfect/qa/unit/WpftFilterFixture \ + writerperfect/qa/unit/WpftFilterTestBase \ + writerperfect/qa/unit/WpftLoader \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Library_wpftwriter.mk b/writerperfect/Library_wpftwriter.mk new file mode 100644 index 000000000..840a86f06 --- /dev/null +++ b/writerperfect/Library_wpftwriter.mk @@ -0,0 +1,133 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_Library_Library,wpftwriter)) + +$(eval $(call gb_Library_set_include,wpftwriter,\ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_set_componentfile,wpftwriter,writerperfect/source/writer/wpftwriter,services)) + +$(eval $(call gb_Library_add_componentimpls,wpftwriter, \ + $(if $(ENABLE_WASM_STRIP_EPUB),,extended) \ + $(if $(ENABLE_WASM_STRIP_SWEXPORTS),,extended2) \ +)) + +$(eval $(call gb_Library_use_sdk_api,wpftwriter)) + +$(eval $(call gb_Library_use_common_precompiled_header,wpftwriter)) + +$(eval $(call gb_Library_use_libraries,wpftwriter,\ + comphelper \ + cppu \ + cppuhelper \ + i18nlangtag \ + vcl \ + sal \ + sax \ + sfx \ + sot \ + svt \ + svx \ + tl \ + ucbhelper \ + utl \ + vcl \ + writerperfect \ + xo \ +)) + +ifneq ($(ENABLE_WASM_STRIP_EPUB),TRUE) +$(eval $(call gb_Library_use_externals,wpftwriter,\ + epubgen \ +)) +endif + +$(eval $(call gb_Library_use_externals,wpftwriter,\ + abw \ + boost_headers \ + ebook \ + $(if $(ENABLE_WASM_STRIP_SWEXPORTS),,etonyek) \ + icu_headers \ + icui18n \ + icuuc \ + liblangtag \ + libxml2 \ + mwaw \ + odfgen \ + revenge \ + staroffice \ + wpd \ + wpg \ + wps \ + zlib \ +)) + +ifneq ($(ENABLE_WASM_STRIP_EPUB),TRUE) +$(eval $(call gb_Library_add_exception_objects,wpftwriter,\ + writerperfect/source/writer/EPUBExportDialog \ + writerperfect/source/writer/EPUBExportFilter \ + writerperfect/source/writer/EPUBExportUIComponent \ + writerperfect/source/writer/EPUBPackage \ +)) +endif + +ifneq ($(ENABLE_WASM_STRIP_SWEXPORTS),TRUE) +$(eval $(call gb_Library_add_exception_objects,wpftwriter,\ + writerperfect/source/writer/AbiWordImportFilter \ + writerperfect/source/writer/EBookImportFilter \ + writerperfect/source/writer/MSWorksImportFilter \ + writerperfect/source/writer/MWAWImportFilter \ + writerperfect/source/writer/PagesImportFilter \ + writerperfect/source/writer/WordPerfectImportFilter \ +)) +endif + +$(eval $(call gb_Library_add_exception_objects,wpftwriter,\ + writerperfect/source/writer/StarOfficeWriterImportFilter \ + writerperfect/source/writer/exp/XMLBase64ImportContext \ + writerperfect/source/writer/exp/XMLFootnoteImportContext \ + writerperfect/source/writer/exp/XMLSectionContext \ + writerperfect/source/writer/exp/XMLTextFrameContext \ + writerperfect/source/writer/exp/XMLTextListContext \ + writerperfect/source/writer/exp/XMLTextListItemContext \ + writerperfect/source/writer/exp/txtparai \ + writerperfect/source/writer/exp/txtstyli \ + writerperfect/source/writer/exp/xmlfmt \ + writerperfect/source/writer/exp/xmlictxt \ + writerperfect/source/writer/exp/xmlimp \ + writerperfect/source/writer/exp/xmlmetai \ + writerperfect/source/writer/exp/xmltbli \ + writerperfect/source/writer/exp/xmltext \ +)) + +# On Windows, libepubgen-0.1.lib(EPUBGenerator.obj) references BCryptCloseAlgorithmProvider, +# BCryptGenRandom, and BCryptOpenAlgorithmProvider via +# workdir/UnpackedTarball/boost/boost/winapi/bcrypt.hpp: +ifeq ($(OS),WNT) +ifeq ($(SYSTEM_EPUBGEN)$(SYSTEM_BOOST),) +$(eval $(call gb_Library_add_libs,wpftwriter, \ + Bcrypt.lib \ +)) +endif +endif + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Library_writerperfect.mk b/writerperfect/Library_writerperfect.mk new file mode 100644 index 000000000..64df2cba9 --- /dev/null +++ b/writerperfect/Library_writerperfect.mk @@ -0,0 +1,60 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_Library_Library,writerperfect)) + +$(eval $(call gb_Library_add_defs,writerperfect,\ + -DWRITERPERFECT_DLLIMPLEMENTATION \ +)) + +$(eval $(call gb_Library_set_include,writerperfect, \ + -I$(SRCDIR)/writerperfect/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_use_externals,writerperfect,\ + boost_headers \ + odfgen \ + revenge \ +)) + +$(eval $(call gb_Library_use_sdk_api,writerperfect)) + +$(eval $(call gb_Library_use_libraries,writerperfect,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ + sot \ + svx \ + tl \ + ucbhelper \ + utl \ + vcl \ + xo \ +)) + +$(eval $(call gb_Library_add_exception_objects,writerperfect,\ + writerperfect/source/common/DirectoryStream \ + writerperfect/source/common/DocumentHandler \ + writerperfect/source/common/WPFTEncodingDialog \ + writerperfect/source/common/WPXSvInputStream \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Makefile b/writerperfect/Makefile new file mode 100644 index 000000000..0997e6284 --- /dev/null +++ b/writerperfect/Makefile @@ -0,0 +1,14 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) + +include $(module_directory)/../solenv/gbuild/partial_build.mk + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Module_writerperfect.mk b/writerperfect/Module_writerperfect.mk new file mode 100644 index 000000000..c09dc27b1 --- /dev/null +++ b/writerperfect/Module_writerperfect.mk @@ -0,0 +1,60 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_Module_Module,writerperfect)) + +$(eval $(call gb_Module_add_targets,writerperfect,\ + $(if $(ENABLE_WASM_STRIP_BASIC_CALC_DRAW_MATH_IMPRESS),, \ + Library_wpftcalc \ + Library_wpftdraw \ + Library_wpftimpress \ + ) \ + Library_wpftwriter \ + Library_writerperfect \ + UIConfig_writerperfect \ +)) + +$(eval $(call gb_Module_add_l10n_targets,writerperfect,\ + AllLangMoTarget_wpt \ +)) + +$(eval $(call gb_Module_add_check_targets,writerperfect,\ + CppunitTest_writerperfect_stream \ + CppunitTest_writerperfect_wpftimport \ +)) + +$(eval $(call gb_Module_add_slowcheck_targets,writerperfect,\ + CppunitTest_writerperfect_calc \ + CppunitTest_writerperfect_draw \ + $(if $(SYSTEM_EPUBGEN),,CppunitTest_writerperfect_epubexport) \ + CppunitTest_writerperfect_import \ + CppunitTest_writerperfect_impress \ + CppunitTest_writerperfect_writer \ + Library_wpftqahelper \ +)) + +$(eval $(call gb_Module_add_uicheck_targets,writerperfect,\ + UITest_writerperfect_epubexport \ +)) + +# screenshots +$(eval $(call gb_Module_add_screenshot_targets,writerperfect,\ + CppunitTest_writerperfect_dialogs_test \ +)) +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/README.md b/writerperfect/README.md new file mode 100644 index 000000000..af23e738b --- /dev/null +++ b/writerperfect/README.md @@ -0,0 +1,9 @@ +# Import / Export Filters for WordPerfect and Other Formats + +Contains import / export filters for WordPerfect and other formats, wrappers +for a set of similar libraries. + +This collection of filters is here in this folder in addition to the +WordPerfect filter that gave the module its (humorous) name "writerperfect" +because the libraries they use all have the same "style" of API and are +developed, at least partially, by the same person or group of persons. diff --git a/writerperfect/UIConfig_writerperfect.mk b/writerperfect/UIConfig_writerperfect.mk new file mode 100644 index 000000000..8599babf7 --- /dev/null +++ b/writerperfect/UIConfig_writerperfect.mk @@ -0,0 +1,27 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +$(eval $(call gb_UIConfig_UIConfig,writerperfect)) + +$(eval $(call gb_UIConfig_add_uifiles,writerperfect,\ + writerperfect/uiconfig/ui/wpftencodingdialog \ + writerperfect/uiconfig/ui/exportepub \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/UITest_writerperfect_epubexport.mk b/writerperfect/UITest_writerperfect_epubexport.mk new file mode 100644 index 000000000..ebec0bf76 --- /dev/null +++ b/writerperfect/UITest_writerperfect_epubexport.mk @@ -0,0 +1,16 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_UITest_UITest,writerperfect_epubexport)) + +$(eval $(call gb_UITest_add_modules,writerperfect_epubexport,$(SRCDIR)/writerperfect/qa/uitest,\ + epubexport/ \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/inc/DirectoryStream.hxx b/writerperfect/inc/DirectoryStream.hxx new file mode 100644 index 000000000..c45209333 --- /dev/null +++ b/writerperfect/inc/DirectoryStream.hxx @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include +#include +#include "writerperfectdllapi.h" +#include +#include + +namespace com::sun::star::ucb +{ +class XContent; +} + +namespace writerperfect +{ +class WRITERPERFECT_DLLPUBLIC DirectoryStream final : public librevenge::RVNGInputStream +{ + struct Impl; + +public: + explicit DirectoryStream(const css::uno::Reference& xContent); + virtual ~DirectoryStream() override; + + static bool isDirectory(const css::uno::Reference& xContent); + static std::unique_ptr + createForParent(const css::uno::Reference& xContent); + + css::uno::Reference getContent() const; + + virtual bool isStructured() override; + SAL_DLLPRIVATE virtual unsigned subStreamCount() override; + SAL_DLLPRIVATE virtual const char* subStreamName(unsigned id) override; + SAL_DLLPRIVATE virtual bool existsSubStream(const char* name) override; + SAL_DLLPRIVATE virtual librevenge::RVNGInputStream* + getSubStreamByName(const char* name) override; + SAL_DLLPRIVATE virtual librevenge::RVNGInputStream* getSubStreamById(unsigned id) override; + + virtual const unsigned char* read(unsigned long numBytes, unsigned long& numBytesRead) override; + virtual int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) override; + virtual long tell() override; + virtual bool isEnd() override; + +private: + std::unique_ptr m_pImpl; +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/DocumentHandler.hxx b/writerperfect/inc/DocumentHandler.hxx new file mode 100644 index 000000000..a79b114f3 --- /dev/null +++ b/writerperfect/inc/DocumentHandler.hxx @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include + +#include + +#include "writerperfectdllapi.h" + +namespace com::sun::star::xml::sax +{ +class XDocumentHandler; +} + +namespace writerperfect +{ +class WRITERPERFECT_DLLPUBLIC DocumentHandler final : public OdfDocumentHandler +{ +public: + DocumentHandler(css::uno::Reference const& xHandler); + SAL_DLLPRIVATE void startDocument() override; + SAL_DLLPRIVATE void endDocument() override; + SAL_DLLPRIVATE void startElement(const char* psName, + const librevenge::RVNGPropertyList& xPropList) override; + SAL_DLLPRIVATE void endElement(const char* psName) override; + SAL_DLLPRIVATE void characters(const librevenge::RVNGString& sCharacters) override; + +private: + css::uno::Reference mxHandler; +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/DocumentHandlerFor.hxx b/writerperfect/inc/DocumentHandlerFor.hxx new file mode 100644 index 000000000..a7c7459fd --- /dev/null +++ b/writerperfect/inc/DocumentHandlerFor.hxx @@ -0,0 +1,22 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +namespace writerperfect +{ +/** Definition of XML import service used with a Generator. + + This template must be specialized for every libodfgen generator. + */ +template struct DocumentHandlerFor +{ + // static OUString name(); +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/DocumentHandlerForOdg.hxx b/writerperfect/inc/DocumentHandlerForOdg.hxx new file mode 100644 index 000000000..7784dddca --- /dev/null +++ b/writerperfect/inc/DocumentHandlerForOdg.hxx @@ -0,0 +1,24 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "DocumentHandlerFor.hxx" + +#include + +namespace writerperfect +{ +template <> struct DocumentHandlerFor +{ + static OUString name() { return "com.sun.star.comp.Draw.XMLOasisImporter"; } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/DocumentHandlerForOdp.hxx b/writerperfect/inc/DocumentHandlerForOdp.hxx new file mode 100644 index 000000000..970f129e6 --- /dev/null +++ b/writerperfect/inc/DocumentHandlerForOdp.hxx @@ -0,0 +1,24 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "DocumentHandlerFor.hxx" + +#include + +namespace writerperfect +{ +template <> struct DocumentHandlerFor +{ + static OUString name() { return "com.sun.star.comp.Impress.XMLOasisImporter"; } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/DocumentHandlerForOds.hxx b/writerperfect/inc/DocumentHandlerForOds.hxx new file mode 100644 index 000000000..226252f09 --- /dev/null +++ b/writerperfect/inc/DocumentHandlerForOds.hxx @@ -0,0 +1,24 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "DocumentHandlerFor.hxx" + +#include + +namespace writerperfect +{ +template <> struct DocumentHandlerFor +{ + static OUString name() { return "com.sun.star.comp.Calc.XMLOasisImporter"; } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/DocumentHandlerForOdt.hxx b/writerperfect/inc/DocumentHandlerForOdt.hxx new file mode 100644 index 000000000..49af6f9d5 --- /dev/null +++ b/writerperfect/inc/DocumentHandlerForOdt.hxx @@ -0,0 +1,24 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "DocumentHandlerFor.hxx" + +#include + +namespace writerperfect +{ +template <> struct DocumentHandlerFor +{ + static OUString name() { return "com.sun.star.comp.Writer.XMLOasisImporter"; } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/ImportFilter.hxx b/writerperfect/inc/ImportFilter.hxx new file mode 100644 index 000000000..f2cfb614d --- /dev/null +++ b/writerperfect/inc/ImportFilter.hxx @@ -0,0 +1,183 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include "DocumentHandler.hxx" +#include "WPXSvInputStream.hxx" + +#include "DocumentHandlerFor.hxx" + +namespace writerperfect +{ +namespace detail +{ +template +class ImportFilterImpl + : public cppu::WeakImplHelper +{ +public: + ImportFilterImpl(const css::uno::Reference& rxContext) + : mxContext(rxContext) + { + } + + const css::uno::Reference& getXContext() const + { + return mxContext; + } + + // XFilter + virtual sal_Bool SAL_CALL + filter(const css::uno::Sequence& rDescriptor) override + { + utl::MediaDescriptor aDescriptor(rDescriptor); + css::uno::Reference xInputStream; + aDescriptor[utl::MediaDescriptor::PROP_INPUTSTREAM] >>= xInputStream; + if (!xInputStream.is()) + { + OSL_ASSERT(false); + return false; + } + + css::uno::Reference xDialogParent; + aDescriptor["ParentWindow"] >>= xDialogParent; + + // An XML import service: what we push sax messages to... + css::uno::Reference xInternalFilter + = mxContext->getServiceManager()->createInstanceWithContext( + DocumentHandlerFor::name(), mxContext); + assert(xInternalFilter); + css::uno::Reference xInternalHandler( + xInternalFilter, css::uno::UNO_QUERY); + assert(xInternalHandler); + + // The XImporter sets up an empty target document for XDocumentHandler to write to... + css::uno::Reference xImporter(xInternalHandler, + css::uno::UNO_QUERY); + assert(xImporter); + xImporter->setTargetDocument(mxDoc); + + // OO Graphics Handler: abstract class to handle document SAX messages, concrete implementation here + // writes to in-memory target doc + DocumentHandler aHandler( + new SvXMLLegacyToFastDocHandler(static_cast(xInternalHandler.get()))); + + WPXSvInputStream input(xInputStream); + + Generator exporter; + exporter.addDocumentHandler(&aHandler, ODF_FLAT_XML); + + doRegisterHandlers(exporter); + + return doImportDocument(Application::GetFrameWeld(xDialogParent), input, exporter, + aDescriptor); + } + + virtual void SAL_CALL cancel() override {} + + // XImporter + const css::uno::Reference& getTargetDocument() const { return mxDoc; } + virtual void SAL_CALL + setTargetDocument(const css::uno::Reference& xDoc) override + { + mxDoc = xDoc; + } + + //XExtendedFilterDetection + virtual OUString SAL_CALL + detect(css::uno::Sequence& Descriptor) override + { + OUString sTypeName; + sal_Int32 nLength = Descriptor.getLength(); + sal_Int32 location = nLength; + const css::beans::PropertyValue* pValue = Descriptor.getConstArray(); + css::uno::Reference xInputStream; + for (sal_Int32 i = 0; i < nLength; i++) + { + if (pValue[i].Name == "TypeName") + location = i; + else if (pValue[i].Name == "InputStream") + pValue[i].Value >>= xInputStream; + } + + if (!xInputStream.is()) + return OUString(); + + WPXSvInputStream input(xInputStream); + + if (doDetectFormat(input, sTypeName)) + { + assert(!sTypeName.isEmpty()); + + if (location == nLength) + { + Descriptor.realloc(nLength + 1); + Descriptor.getArray()[location].Name = "TypeName"; + } + + Descriptor.getArray()[location].Value <<= sTypeName; + } + + return sTypeName; + } + + // XInitialization + virtual void SAL_CALL + initialize(const css::uno::Sequence& /*aArguments*/) override + { + } + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) = 0; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + Generator& rGenerator, utl::MediaDescriptor& rDescriptor) + = 0; + virtual void doRegisterHandlers(Generator&){}; + + css::uno::Reference mxContext; + css::uno::Reference mxDoc; +}; +} + +/** A base class for import filters. + */ +template +struct ImportFilter : public cppu::ImplInheritanceHelper, + css::lang::XServiceInfo> +{ + ImportFilter(const css::uno::Reference& rxContext) + : cppu::ImplInheritanceHelper, css::lang::XServiceInfo>( + rxContext) + { + } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/WPFTEncodingDialog.hxx b/writerperfect/inc/WPFTEncodingDialog.hxx new file mode 100644 index 000000000..31df95826 --- /dev/null +++ b/writerperfect/inc/WPFTEncodingDialog.hxx @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MSWorksImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "writerperfectdllapi.h" + +namespace writerperfect +{ +class WRITERPERFECT_DLLPUBLIC WPFTEncodingDialog final : public weld::GenericDialogController +{ +public: + WPFTEncodingDialog(weld::Window* pParent, const OUString& title, const OUString& defEncoding); + + virtual ~WPFTEncodingDialog() override; + + OUString GetEncoding() const; + bool hasUserCalledCancel() const { return m_userHasCancelled; } + +private: + bool m_userHasCancelled; + + std::unique_ptr m_xLbCharset; + std::unique_ptr m_xBtnOk; + std::unique_ptr m_xBtnCancel; + +private: + DECL_DLLPRIVATE_LINK(CancelHdl, weld::Button&, void); + + WPFTEncodingDialog(WPFTEncodingDialog const&) = delete; + WPFTEncodingDialog& operator=(WPFTEncodingDialog const&) = delete; +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/WPFTResMgr.hxx b/writerperfect/inc/WPFTResMgr.hxx new file mode 100644 index 000000000..5780dd30f --- /dev/null +++ b/writerperfect/inc/WPFTResMgr.hxx @@ -0,0 +1,9 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +#pragma once + +#include + +inline OUString WpResId(TranslateId aId) { return Translate::get(aId, Translate::Create("wpt")); } + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/WPXSvInputStream.hxx b/writerperfect/inc/WPXSvInputStream.hxx new file mode 100644 index 000000000..8cf41d777 --- /dev/null +++ b/writerperfect/inc/WPXSvInputStream.hxx @@ -0,0 +1,54 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include +#include +#include +#include "writerperfectdllapi.h" +#include + +namespace com::sun::star::io +{ +class XInputStream; +class XSeekable; +} + +namespace writerperfect +{ +class WPXSvInputStreamImpl; + +class SAL_DLLPUBLIC_RTTI WPXSvInputStream final : public librevenge::RVNGInputStream +{ +public: + WRITERPERFECT_DLLPUBLIC + WPXSvInputStream(css::uno::Reference const& xStream); + WRITERPERFECT_DLLPUBLIC virtual ~WPXSvInputStream() override; + + virtual bool isStructured() override; + virtual unsigned subStreamCount() override; + virtual const char* subStreamName(unsigned id) override; + virtual bool existsSubStream(const char* name) override; + virtual librevenge::RVNGInputStream* getSubStreamByName(const char* name) override; + virtual librevenge::RVNGInputStream* getSubStreamById(unsigned id) override; + + WRITERPERFECT_DLLPUBLIC virtual const unsigned char* read(unsigned long numBytes, + unsigned long& numBytesRead) override; + WRITERPERFECT_DLLPUBLIC virtual int seek(long offset, + librevenge::RVNG_SEEK_TYPE seekType) override; + virtual long tell() override; + virtual bool isEnd() override; + +private: + std::unique_ptr mpImpl; +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/strings.hrc b/writerperfect/inc/strings.hrc new file mode 100644 index 000000000..a9373d237 --- /dev/null +++ b/writerperfect/inc/strings.hrc @@ -0,0 +1,23 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#define NC_(Context, String) TranslateId(Context, reinterpret_cast(u8##String)) + +#define STR_ENCODING_DIALOG_TITLE NC_("STR_ENCODING_DIALOG_TITLE", "Import file") +#define STR_ENCODING_DIALOG_TITLE_MSMULTIPLAN NC_("STR_ENCODING_DIALOG_TITLE_MSMULTIPLAN", "Import MS Multiplan for DOS file") +#define STR_ENCODING_DIALOG_TITLE_MSWORKS NC_("STR_ENCODING_DIALOG_TITLE_MSWORKS", "Import MS Works file") +#define STR_ENCODING_DIALOG_TITLE_MSWRITE NC_("STR_ENCODING_DIALOG_TITLE_MSWRITE", "Import MS Write file") +#define STR_ENCODING_DIALOG_TITLE_DOSWORD NC_("STR_ENCODING_DIALOG_TITLE_DOSWORD", "Import MS Word for DOS file") +#define STR_ENCODING_DIALOG_TITLE_LOTUS NC_("STR_ENCODING_DIALOG_TITLE_LOTUS", "Import Lotus file") +#define STR_ENCODING_DIALOG_TITLE_SYMPHONY NC_("STR_ENCODING_DIALOG_TITLE_SYMPHONY", "Import Symphony file") +#define STR_ENCODING_DIALOG_TITLE_QUATTROPRO NC_("STR_ENCODING_DIALOG_TITLE_QUATTROPRO", "Import Quattro Pro file") + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/inc/writerperfectdllapi.h b/writerperfect/inc/writerperfectdllapi.h new file mode 100644 index 000000000..29f708ffc --- /dev/null +++ b/writerperfect/inc/writerperfectdllapi.h @@ -0,0 +1,20 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#if defined WRITERPERFECT_DLLIMPLEMENTATION + +#define WRITERPERFECT_DLLPUBLIC SAL_DLLPUBLIC_EXPORT +#else +#define WRITERPERFECT_DLLPUBLIC SAL_DLLPUBLIC_IMPORT +#endif +#define WRITERPERFECT_DLLPRIVATE SAL_DLLPRIVATE + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/uitest/epubexport/epubexport.py b/writerperfect/qa/uitest/epubexport/epubexport.py new file mode 100644 index 000000000..76d8c5e43 --- /dev/null +++ b/writerperfect/qa/uitest/epubexport/epubexport.py @@ -0,0 +1,128 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +from com.sun.star.beans import PropertyValue +from libreoffice.uno.propertyvalue import mkPropertyValues +from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict +import uno + + +# Test for EPUBExportDialog and EPUBExportUIComponent. +class EPUBExportTest(UITestCase): + + def testUIComponent(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + # Make sure we get what we asked for. + self.assertEqual("com.sun.star.comp.Writer.EPUBExportUIComponent", uiComponent.getImplementationName()) + self.assertEqual(True, uiComponent.supportsService("com.sun.star.ui.dialogs.FilterOptionsDialog")) + # Just make sure this doesn't fail. + uiComponent.setTitle(str()) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + # Select the second entry to request EPUB2, not EPUB3. + dialog.getChild("versionlb").executeAction("SELECT", mkPropertyValues({"POS": "1"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + epubVersion = [i.Value for i in filterData if i.Name == "EPUBVersion"][0] + # This was 30, EPUBExportDialog::VersionSelectHdl() did not set the version. + self.assertEqual(20, epubVersion) + + def testCustomProperties(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + # Make sure that by default the version is not altered. + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + self.assertEqual(0, len([i.Value for i in filterData if i.Name == "EPUBVersion"])) + + # But if we set it explicitly, then it's retained, even without interacting with the UI. + filterData = (PropertyValue(Name="EPUBVersion", Value=30),) + propertyValues = (PropertyValue(Name="FilterData", Value=uno.Any("[]com.sun.star.beans.PropertyValue", filterData)),) + uiComponent.setPropertyValues(propertyValues) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + epubVersion = [i.Value for i in filterData if i.Name == "EPUBVersion"][0] + self.assertEqual(30, epubVersion) + + def testDialogVersionInput(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + positions = [] + for version in (20, 30): + filterData = (PropertyValue(Name="EPUBVersion", Value=version),) + propertyValues = (PropertyValue(Name="FilterData", Value=uno.Any("[]com.sun.star.beans.PropertyValue", filterData)),) + uiComponent.setPropertyValues(propertyValues) + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + versionlb = get_state_as_dict(dialog.getChild("versionlb")) + # Log the state of the versionlb widget and exit. + positions.append(versionlb["SelectEntryPos"]) + # Make sure that initializing with 2 different versions results in 2 different widget states. + self.assertEqual(2, len(set(positions))) + + def testCoverImage(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + dialog.getChild("coverpath").executeAction("TYPE", mkPropertyValues({"TEXT": "cover.png"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # The RVNGCoverImage key was missing, EPUBExportDialog::OKClickHdl() did not set it. + coverImage = [i.Value for i in filterData if i.Name == "RVNGCoverImage"][0] + self.assertEqual("cover.png", coverImage) + + def testMediaDir(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + dialog.getChild("mediadir").executeAction("TYPE", mkPropertyValues({"TEXT": "file:///foo/bar"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # The RVNGMediaDir key was missing, EPUBExportDialog::OKClickHdl() did not set it. + mediaDir = [i.Value for i in filterData if i.Name == "RVNGMediaDir"][0] + self.assertEqual("file:///foo/bar", mediaDir) + + def testFixedLayout(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + # Select the second entry to request fixed, not reflowable layout. + dialog.getChild("layoutlb").executeAction("SELECT", mkPropertyValues({"POS": "1"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # The EPUBLayoutMethod key was missing, EPUBExportDialog::OKClickHdl() did not set it. + layout = [i.Value for i in filterData if i.Name == "EPUBLayoutMethod"][0] + # 1 stands for libepubgen::EPUB_LAYOUT_METHOD_FIXED. + self.assertEqual(1, layout) + + def testMeta(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + dialog.getChild("identifier").executeAction("TYPE", mkPropertyValues({"TEXT": "baddcafe-e394-4cd6-9b83-7172794612e5"})) + dialog.getChild("title").executeAction("TYPE", mkPropertyValues({"TEXT": "unknown title from ui"})) + dialog.getChild("author").executeAction("TYPE", mkPropertyValues({"TEXT": "unknown author from ui"})) + dialog.getChild("language").executeAction("TYPE", mkPropertyValues({"TEXT": "sk"})) + dialog.getChild("date").executeAction("TYPE", mkPropertyValues({"TEXT": "2013-11-20T17:16:07Z"})) + + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # These keys were missing, EPUBExportDialog::OKClickHdl() did not set them. + identifier = [i.Value for i in filterData if i.Name == "RVNGIdentifier"][0] + self.assertEqual("baddcafe-e394-4cd6-9b83-7172794612e5", identifier) + title = [i.Value for i in filterData if i.Name == "RVNGTitle"][0] + self.assertEqual("unknown title from ui", title) + initialCreator = [i.Value for i in filterData if i.Name == "RVNGInitialCreator"][0] + self.assertEqual("unknown author from ui", initialCreator) + language = [i.Value for i in filterData if i.Name == "RVNGLanguage"][0] + self.assertEqual("sk", language) + date = [i.Value for i in filterData if i.Name == "RVNGDate"][0] + self.assertEqual("2013-11-20T17:16:07Z", date) + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/writerperfect/qa/unit/DirectoryStreamTest.cxx b/writerperfect/qa/unit/DirectoryStreamTest.cxx new file mode 100644 index 000000000..fd75805f5 --- /dev/null +++ b/writerperfect/qa/unit/DirectoryStreamTest.cxx @@ -0,0 +1,148 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include + +#include + +#include + +#include +#include + +namespace ucb = com::sun::star::ucb; +namespace uno = com::sun::star::uno; + +using std::unique_ptr; + +using librevenge::RVNGInputStream; + +using writerperfect::DirectoryStream; + +namespace +{ +class DirectoryStreamTest : public test::BootstrapFixture +{ +public: + DirectoryStreamTest(); + +public: + CPPUNIT_TEST_SUITE(DirectoryStreamTest); + CPPUNIT_TEST(testConstruction); + CPPUNIT_TEST(testDetection); + CPPUNIT_TEST(testDataOperations); + CPPUNIT_TEST(testStructuredOperations); + CPPUNIT_TEST_SUITE_END(); + +private: + void testConstruction(); + void testDetection(); + void testDataOperations(); + void testStructuredOperations(); + +private: + uno::Reference m_xDir; + uno::Reference m_xFile; + uno::Reference m_xNonexistent; +}; + +constexpr OUStringLiteral g_aDirPath = u"/writerperfect/qa/unit/data/stream/test.dir"; +constexpr OUStringLiteral g_aNondirPath = u"/writerperfect/qa/unit/data/stream/test.dir/mimetype"; +constexpr OUStringLiteral g_aNonexistentPath = u"/writerperfect/qa/unit/data/stream/foo/bar"; + +DirectoryStreamTest::DirectoryStreamTest() +{ + const uno::Reference xCmdEnv; + const uno::Reference xContext(comphelper::getProcessComponentContext()); + + using ucbhelper::Content; + + m_xDir = Content(m_directories.getURLFromSrc(g_aDirPath), xCmdEnv, xContext).get(); + m_xFile = Content(m_directories.getURLFromSrc(g_aNondirPath), xCmdEnv, xContext).get(); + m_xNonexistent + = Content(m_directories.getURLFromSrc(g_aNonexistentPath), xCmdEnv, xContext).get(); +} + +void DirectoryStreamTest::testConstruction() +{ + const unique_ptr pDir(DirectoryStream::createForParent(m_xFile)); + CPPUNIT_ASSERT(bool(pDir)); + CPPUNIT_ASSERT(pDir->isStructured()); + + // this should work for dirs too + const unique_ptr pDir2(DirectoryStream::createForParent(m_xDir)); + CPPUNIT_ASSERT(bool(pDir2)); + CPPUNIT_ASSERT(pDir2->isStructured()); + + // for nonexistent dirs nothing is created + const unique_ptr pNondir(DirectoryStream::createForParent(m_xNonexistent)); + CPPUNIT_ASSERT(!pNondir); + + // even if we try harder, just an empty shell is created + DirectoryStream aNondir2(m_xNonexistent); + CPPUNIT_ASSERT(!aNondir2.isStructured()); +} + +void DirectoryStreamTest::testDetection() +{ + CPPUNIT_ASSERT(DirectoryStream::isDirectory(m_xDir)); + CPPUNIT_ASSERT(!DirectoryStream::isDirectory(m_xFile)); + CPPUNIT_ASSERT(!DirectoryStream::isDirectory(m_xNonexistent)); +} + +void lcl_testDataOperations(RVNGInputStream& rStream) +{ + CPPUNIT_ASSERT(rStream.isEnd()); + CPPUNIT_ASSERT_EQUAL(0L, rStream.tell()); + CPPUNIT_ASSERT_EQUAL(-1, rStream.seek(0, librevenge::RVNG_SEEK_CUR)); + + unsigned long numBytesRead = 0; + CPPUNIT_ASSERT(!rStream.read(1, numBytesRead)); + CPPUNIT_ASSERT_EQUAL(0UL, numBytesRead); +} + +void DirectoryStreamTest::testDataOperations() +{ + // data operations do not make sense on a directory -> just dummy + // impls. + DirectoryStream aDir(m_xDir); + lcl_testDataOperations(aDir); + + // ... and they are equally empty if we try to pass a file + DirectoryStream aFile(m_xFile); + lcl_testDataOperations(aFile); +} + +void lcl_testStructuredOperations(RVNGInputStream& rStream) +{ + CPPUNIT_ASSERT(rStream.isStructured()); + unique_ptr pSubstream(rStream.getSubStreamByName("mimetype")); + CPPUNIT_ASSERT(bool(pSubstream)); + + // TODO: test for other operations when they are implemented =) +} + +void DirectoryStreamTest::testStructuredOperations() +{ + DirectoryStream aDir(m_xDir); + lcl_testStructuredOperations(aDir); + + unique_ptr pDir(DirectoryStream::createForParent(m_xFile)); + CPPUNIT_ASSERT(bool(pDir)); + lcl_testStructuredOperations(*pDir); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(DirectoryStreamTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/DrawingImportTest.cxx b/writerperfect/qa/unit/DrawingImportTest.cxx new file mode 100644 index 000000000..8af2ec8d6 --- /dev/null +++ b/writerperfect/qa/unit/DrawingImportTest.cxx @@ -0,0 +1,156 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include "WpftFilterFixture.hxx" +#include "WpftLoader.hxx" +#include "wpftimport.hxx" + +namespace +{ +namespace uno = css::uno; + +class DrawingImportFilter : public writerperfect::ImportFilter +{ +public: + explicit DrawingImportFilter(const uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pWindow, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) override; + + static void generate(librevenge::RVNGDrawingInterface& rDocument); +}; + +bool DrawingImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream&, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + DrawingImportFilter::generate(rGenerator); + return true; +} + +bool DrawingImportFilter::doDetectFormat(librevenge::RVNGInputStream&, OUString& rTypeName) +{ + rTypeName = "WpftDummyDrawing"; + return true; +} + +// XServiceInfo +OUString SAL_CALL DrawingImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Wpft.QA.DrawingImportFilter"; +} + +sal_Bool SAL_CALL DrawingImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +uno::Sequence SAL_CALL DrawingImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +void DrawingImportFilter::generate(librevenge::RVNGDrawingInterface& rDocument) +{ + using namespace librevenge; + + rDocument.startDocument(RVNGPropertyList()); + RVNGPropertyList aProps; + aProps.insert("svg:width", 800); + aProps.insert("svg:height", 600); + rDocument.startPage(aProps); + aProps.clear(); + aProps.insert("svg:x", 50); + aProps.insert("svg:y", 50); + aProps.insert("svg:width", 200); + aProps.insert("svg:height", 100); + rDocument.startTextObject(aProps); + rDocument.openParagraph(RVNGPropertyList()); + rDocument.openSpan(RVNGPropertyList()); + rDocument.insertText("My hovercraft is full of eels."); + rDocument.closeSpan(); + rDocument.closeParagraph(); + rDocument.endTextObject(); + rDocument.endPage(); + rDocument.endDocument(); +} +} + +namespace +{ +class DrawingImportTest : public writerperfect::test::WpftFilterFixture +{ +public: + void test(); + + CPPUNIT_TEST_SUITE(DrawingImportTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +void DrawingImportTest::test() +{ + using namespace css; + + rtl::Reference xFilter{ new DrawingImportFilter(m_xContext) }; + writerperfect::test::WpftLoader aLoader(createDummyInput(), xFilter, "private:factory/sdraw", + m_xDesktop, m_xContext); + + uno::Reference xDoc(aLoader.getDocument(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xDoc.is()); + uno::Reference xPages = xDoc->getDrawPages(); + CPPUNIT_ASSERT(xPages.is()); + auto aPage = xPages->getByIndex(0); + uno::Reference xPageProps; + CPPUNIT_ASSERT(aPage >>= xPageProps); + CPPUNIT_ASSERT(xPageProps.is()); + sal_Int32 nProp = 0; + CPPUNIT_ASSERT(xPageProps->getPropertyValue("Height") >>= nProp); + CPPUNIT_ASSERT_EQUAL(sal_Int32(600), nProp); + CPPUNIT_ASSERT(xPageProps->getPropertyValue("Width") >>= nProp); + CPPUNIT_ASSERT_EQUAL(sal_Int32(800), nProp); + uno::Reference xShapes(xPageProps, uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + auto aShape = xShapes->getByIndex(0); + uno::Reference xShapeDesc; + CPPUNIT_ASSERT(aShape >>= xShapeDesc); + CPPUNIT_ASSERT(xShapeDesc.is()); + CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.TextShape"), xShapeDesc->getShapeType()); + uno::Reference xText(xShapeDesc, uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("My hovercraft is full of eels."), xText->getString()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(DrawingImportTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/EPUBExportTest.cxx b/writerperfect/qa/unit/EPUBExportTest.cxx new file mode 100644 index 000000000..71bf41130 --- /dev/null +++ b/writerperfect/qa/unit/EPUBExportTest.cxx @@ -0,0 +1,886 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace ::com::sun::star; + +namespace +{ +constexpr OUStringLiteral DATA_DIRECTORY = u"/writerperfect/qa/unit/data/writer/epubexport/"; + +/// Tests the EPUB export filter. +class EPUBExportTest : public test::BootstrapFixture, + public unotest::MacrosTest, + public XmlTestTools +{ +protected: + uno::Reference mxComponent; + utl::TempFile maTempFile; + xmlDocUniquePtr mpXmlDoc; + uno::Reference mxZipFile; + OUString maFilterOptions; + +public: + void setUp() override; + void tearDown() override; + void registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) override; + void createDoc(std::u16string_view rFile, + const uno::Sequence& rFilterData); + /// Returns an XML representation of the stream named rName in the exported package. + xmlDocUniquePtr parseExport(const OUString& rName); + /// Parses a CSS representation of the stream named rName and returns it. + std::map> parseCss(const OUString& rName); + /// Looks up a key of a class in rCss. + static OUString getCss(std::map>& rCss, const OUString& rClass, + std::u16string_view rKey); +}; + +void EPUBExportTest::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void EPUBExportTest::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + mpXmlDoc.reset(); + + test::BootstrapFixture::tearDown(); +} + +void EPUBExportTest::registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) +{ + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("dc"), BAD_CAST("http://purl.org/dc/elements/1.1/")); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("opf"), BAD_CAST("http://www.idpf.org/2007/opf")); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("xhtml"), BAD_CAST("http://www.w3.org/1999/xhtml")); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("svg"), BAD_CAST("http://www.w3.org/2000/svg")); +} + +void EPUBExportTest::createDoc(std::u16string_view rFile, + const uno::Sequence& rFilterData) +{ + // Import the bugdoc and export as EPUB. + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + rFile; + mxComponent = loadFromDesktop(aURL); + uno::Reference xStorable(mxComponent, uno::UNO_QUERY); + maTempFile.EnableKillingFile(); + utl::MediaDescriptor aMediaDescriptor; + aMediaDescriptor["FilterName"] <<= OUString("EPUB"); + if (maFilterOptions.isEmpty()) + aMediaDescriptor["FilterData"] <<= rFilterData; + else + aMediaDescriptor["FilterOptions"] <<= maFilterOptions; + xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); + mxZipFile + = packages::zip::ZipFileAccess::createWithURL(mxComponentContext, maTempFile.GetURL()); +} + +xmlDocUniquePtr EPUBExportTest::parseExport(const OUString& rName) +{ + uno::Reference xInputStream(mxZipFile->getByName(rName), uno::UNO_QUERY); + std::unique_ptr pStream(utl::UcbStreamHelper::CreateStream(xInputStream, true)); + return parseXmlStream(pStream.get()); +} + +std::map> EPUBExportTest::parseCss(const OUString& rName) +{ + std::map> aRet; + + uno::Reference xInputStream(mxZipFile->getByName(rName), uno::UNO_QUERY); + std::unique_ptr pStream(utl::UcbStreamHelper::CreateStream(xInputStream, true)); + + // Minimal CSS handler till orcus is up to our needs. + OString aLine; + OUString aRuleName; + while (!pStream->eof()) + { + pStream->ReadLine(aLine); + if (aLine.endsWith("{")) + // '.name {' -> 'name' + aRuleName = OUString::fromUtf8(aLine.subView(1, aLine.getLength() - 3)); + else if (aLine.endsWith(";")) + aRet[aRuleName].push_back(OUString::fromUtf8(aLine)); + } + + return aRet; +} + +OUString EPUBExportTest::getCss(std::map>& rCss, + const OUString& rClass, std::u16string_view rKey) +{ + OUString aRet; + + auto it = rCss.find(rClass); + CPPUNIT_ASSERT(it != rCss.end()); + + for (const auto& rKeyValue : it->second) + { + OUString aKeyValue = rKeyValue.trim(); + std::vector aTokens = comphelper::string::split(aKeyValue, ':'); + CPPUNIT_ASSERT_EQUAL(static_cast(2), aTokens.size()); + if (o3tl::trim(aTokens[0]) == rKey) + { + aRet = aTokens[1].trim(); + if (aRet.endsWith(";")) + // Ignore trailing semicolon. + aRet = aRet.copy(0, aRet.getLength() - 1); + break; + } + } + + return aRet; +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testOutlineLevel) +{ + createDoc(u"outline-level.fodt", {}); + + // Make sure that the output is split into two. + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/sections/section0001.xhtml")); + // This failed, output was a single section. + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/sections/section0002.xhtml")); + CPPUNIT_ASSERT(!mxZipFile->hasByName("OEBPS/sections/section0003.xhtml")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testMimetype) +{ + createDoc(u"hello.fodt", {}); + + // Check that the mime type is written uncompressed at the expected location. + SvFileStream aFileStream(maTempFile.GetURL(), StreamMode::READ); + SvMemoryStream aMemoryStream; + aMemoryStream.WriteStream(aFileStream); + OString aExpected("application/epub+zip"); + CPPUNIT_ASSERT(aMemoryStream.GetSize() > static_cast(aExpected.getLength()) + 38); + + OString aActual(static_cast(aMemoryStream.GetData()) + 38, aExpected.getLength()); + // This failed: actual data was some garbage, not the uncompressed mime type. + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); + + mpXmlDoc = parseExport("OEBPS/content.opf"); + // Default is EPUB3. + assertXPath(mpXmlDoc, "/opf:package", "version", "3.0"); + + // This was just "libepubgen/x.y.z", i.e. the LO version was missing. + OUString aGenerator + = getXPath(mpXmlDoc, "/opf:package/opf:metadata/opf:meta[@name='generator']", "content"); + CPPUNIT_ASSERT(aGenerator.startsWith(utl::DocInfoHelper::GetGeneratorString())); + + uno::Reference xMSF(mxComponentContext->getServiceManager(), + uno::UNO_QUERY); + const OUString aServiceName("com.sun.star.comp.Writer.EPUBExportFilter"); + uno::Reference xFilter(xMSF->createInstance(aServiceName), uno::UNO_QUERY); + // Should result in no errors. + xFilter->cancel(); + // We got back what we expected. + uno::Reference xServiceInfo(xFilter, uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(aServiceName, xServiceInfo->getImplementationName()); + CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.document.ExportFilter")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testEPUB2) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { // Explicitly request EPUB2. + { "EPUBVersion", uno::Any(static_cast(20)) } })); + createDoc(u"hello.fodt", aFilterData); + + mpXmlDoc = parseExport("OEBPS/content.opf"); + // This was 3.0, EPUBVersion filter option was ignored and we always emitted EPUB3. + assertXPath(mpXmlDoc, "/opf:package", "version", "2.0"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testEPUBFixedLayout) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { // Explicitly request fixed layout. + { "EPUBLayoutMethod", + uno::Any(static_cast(libepubgen::EPUB_LAYOUT_METHOD_FIXED)) } })); + createDoc(u"hello.fodt", aFilterData); + + mpXmlDoc = parseExport("OEBPS/content.opf"); + // This was missing, EPUBLayoutMethod filter option was ignored and we always emitted reflowable layout. + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/opf:meta[@property='rendition:layout']", + "pre-paginated"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testEPUBFixedLayoutOption) +{ + // Explicitly request fixed layout, this time via FilterOptions. + maFilterOptions = "layout=fixed"; + createDoc(u"hello.fodt", {}); + + // This failed, fixed layout was only working via the FilterData map. + mpXmlDoc = parseExport("OEBPS/content.opf"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/opf:meta[@property='rendition:layout']", + "pre-paginated"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testEPUBFixedLayoutImplicitBreak) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { // Explicitly request fixed layout. + { "EPUBLayoutMethod", + uno::Any(static_cast(libepubgen::EPUB_LAYOUT_METHOD_FIXED)) } })); + createDoc(u"fxl-2page.fodt", aFilterData); + + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/sections/section0001.xhtml")); + // This was missing, implicit page break (as calculated by the layout) was lost on export. + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/sections/section0002.xhtml")); + CPPUNIT_ASSERT(!mxZipFile->hasByName("OEBPS/sections/section0003.xhtml")); + + // Make sure that fixed layout has chapter names in the navigation + // document. + mpXmlDoc = parseExport("OEBPS/toc.xhtml"); + // This was 'Page 1' instead. + assertXPathContent(mpXmlDoc, "//xhtml:li[1]/xhtml:a", "First chapter"); + assertXPathContent(mpXmlDoc, "//xhtml:li[2]/xhtml:a", "Second chapter"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testPageBreakSplit) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { // Explicitly request split on page break (instead of on heading). + { "EPUBSplitMethod", + uno::Any(static_cast(libepubgen::EPUB_SPLIT_METHOD_PAGE_BREAK)) } })); + createDoc(u"2pages.fodt", aFilterData); + + // Make sure that the output is split into two. + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/sections/section0001.xhtml")); + // This failed, output was a single section. + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/sections/section0002.xhtml")); + CPPUNIT_ASSERT(!mxZipFile->hasByName("OEBPS/sections/section0003.xhtml")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testSpanAutostyle) +{ + createDoc(u"span-autostyle.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:span[1]", "class", "span0"); + // This failed, it was still span1, i.e. the bold and the italic formatting + // did not differ. + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:span[2]", "class", "span1"); + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:span[3]", "class", "span2"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testParaAutostyleCharProps) +{ + createDoc(u"para-autostyle-char-props.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This failed, para-level char props were not exported. + assertXPath(mpXmlDoc, "//xhtml:p[1]/xhtml:span", "class", "span0"); + assertXPath(mpXmlDoc, "//xhtml:p[2]/xhtml:span", "class", "span1"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testMeta) +{ + createDoc(u"meta.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/content.opf"); + // This was "Unknown Author", was not handled. + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:creator", "A U Thor"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:title", "Title"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:language", "hu"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/opf:meta[@property='dcterms:modified']", + "2017-09-27T09:51:19Z"); + + // Make sure that cover image next to the source document is picked up. + assertXPath(mpXmlDoc, "/opf:package/opf:manifest/opf:item[@href='images/image0001.png']", + "properties", "cover-image"); + assertXPath(mpXmlDoc, "/opf:package/opf:manifest/opf:item[@href='images/image0001.png']", + "media-type", "image/png"); + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/images/image0001.png")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testMetaXMP) +{ + createDoc(u"meta-xmp.fodt", {}); + mpXmlDoc = parseExport("OEBPS/content.opf"); + + // These were the libepubgen default values, metadata from a matching .xmp file was not picked up. + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:identifier", + "deadbeef-e394-4cd6-9b83-7172794612e5"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:title", "unknown title from xmp"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:creator", "unknown author from xmp"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:language", "nl"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/opf:meta[@property='dcterms:modified']", + "2016-11-20T17:16:07Z"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testMetaAPI) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { { "RVNGIdentifier", uno::Any(OUString("deadc0de-e394-4cd6-9b83-7172794612e5")) }, + { "RVNGTitle", uno::Any(OUString("unknown title from api")) }, + { "RVNGInitialCreator", uno::Any(OUString("unknown author from api")) }, + { "RVNGLanguage", uno::Any(OUString("hu")) }, + { "RVNGDate", uno::Any(OUString("2015-11-20T17:16:07Z")) } })); + createDoc(u"meta-xmp.fodt", aFilterData); + mpXmlDoc = parseExport("OEBPS/content.opf"); + + // These were values from XMP (deadbeef, etc.), not from API. + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:identifier", + "deadc0de-e394-4cd6-9b83-7172794612e5"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:title", "unknown title from api"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:creator", "unknown author from api"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/dc:language", "hu"); + assertXPathContent(mpXmlDoc, "/opf:package/opf:metadata/opf:meta[@property='dcterms:modified']", + "2015-11-20T17:16:07Z"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testCoverImage) +{ + OUString aCoverURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "meta.cover-image.png"; + uno::Sequence aFilterData( + comphelper::InitPropertySequence({ { "RVNGCoverImage", uno::Any(aCoverURL) } })); + createDoc(u"hello.fodt", aFilterData); + mpXmlDoc = parseExport("OEBPS/content.opf"); + + // Make sure that the explicitly set cover image is used. + // This failed, as the image was not part of the package. + assertXPath(mpXmlDoc, "/opf:package/opf:manifest/opf:item[@href='images/image0001.png']", + "properties", "cover-image"); + assertXPath(mpXmlDoc, "/opf:package/opf:manifest/opf:item[@href='images/image0001.png']", + "media-type", "image/png"); + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/images/image0001.png")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testParaNamedstyle) +{ + createDoc(u"para-namedstyle.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + assertXPath(mpXmlDoc, "//xhtml:p[1]", "class", "para0"); + // This failed, paragraph properties from style were not exported. + assertXPath(mpXmlDoc, "//xhtml:p[2]", "class", "para1"); + + // Test character properties from named paragraph style. + assertXPath(mpXmlDoc, "//xhtml:p[1]/xhtml:span", "class", "span0"); + // This failed, character properties from paragraph style were not exported. + assertXPath(mpXmlDoc, "//xhtml:p[2]/xhtml:span", "class", "span1"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testCharNamedstyle) +{ + createDoc(u"char-namedstyle.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + + // Test character properties from named text style. + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:span[1]", "class", "span0"); + // This failed, character properties from text style were not exported. + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:span[2]", "class", "span1"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testNamedStyleInheritance) +{ + createDoc(u"named-style-inheritance.fodt", {}); + + // Find the CSS rule for the blue text. + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + OUString aBlue = getXPath(mpXmlDoc, "//xhtml:p[2]/xhtml:span[2]", "class"); + + CPPUNIT_ASSERT_EQUAL(OUString("#0000ff"), EPUBExportTest::getCss(aCssDoc, aBlue, u"color")); + // This failed, the span only had the properties from its style, but not + // from the style's parent(s). + CPPUNIT_ASSERT_EQUAL(OUString("'Liberation Mono'"), + EPUBExportTest::getCss(aCssDoc, aBlue, u"font-family")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testNestedSpan) +{ + createDoc(u"nested-span.fodt", {}); + + // Check textural content of nested span. + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + // This crashed, span had no content. + assertXPathContent(mpXmlDoc, "//xhtml:p/xhtml:span[2]", "red"); + + // Check formatting of nested span. + OUString aRed = getXPath(mpXmlDoc, "//xhtml:p/xhtml:span[2]", "class"); + // This failed, direct formatting on top of named style was lost. + CPPUNIT_ASSERT_EQUAL(OUString("#ff0000"), EPUBExportTest::getCss(aCssDoc, aRed, u"color")); + CPPUNIT_ASSERT_EQUAL(OUString("'Liberation Mono'"), + EPUBExportTest::getCss(aCssDoc, aRed, u"font-family")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testLineBreak) +{ + createDoc(u"line-break.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This was 0, line break was not handled. + assertXPath(mpXmlDoc, "//xhtml:p[1]/xhtml:span/xhtml:br", 1); + // This was 0, line break inside span was not handled. + assertXPath(mpXmlDoc, "//xhtml:p[2]/xhtml:span/xhtml:br", 1); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testEscape) +{ + createDoc(u"escape.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This was lost. + assertXPathContent(mpXmlDoc, "//xhtml:p[1]/xhtml:span[1]", OUString::fromUtf8("\xc2\xa0")); + // Make sure escaping happens only once. + assertXPathContent(mpXmlDoc, "//xhtml:p[1]/xhtml:span[2]", "a&b"); + // This was also lost. + assertXPathContent( + mpXmlDoc, "//xhtml:p[1]/xhtml:span[3]", + OUString::fromUtf8("\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2" + "\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 ")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testParaCharProps) +{ + createDoc(u"para-char-props.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + // Check formatting of the middle span. + OUString aMiddle = getXPath(mpXmlDoc, "//xhtml:p/xhtml:span[2]", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("italic"), + EPUBExportTest::getCss(aCssDoc, aMiddle, u"font-style")); + // Direct para formatting was lost, only direct char formatting was + // written, so this failed. + CPPUNIT_ASSERT_EQUAL(OUString("bold"), + EPUBExportTest::getCss(aCssDoc, aMiddle, u"font-weight")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testSection) +{ + createDoc(u"section.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This was "After.", i.e. in-section content was ignored. + assertXPathContent(mpXmlDoc, "//xhtml:p[2]/xhtml:span", "In section."); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testList) +{ + createDoc(u"list.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This was "C", i.e. in-list content was ignored. + assertXPathContent(mpXmlDoc, "//xhtml:p[2]/xhtml:span", "B"); + // Test nested list content. + assertXPathContent(mpXmlDoc, "//xhtml:p[6]/xhtml:span", "F"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testImage) +{ + createDoc(u"image.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:img", 1); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testImageBorder) +{ + createDoc(u"image-border.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + + OUString aClass = getXPath(mpXmlDoc, "//xhtml:img", "class"); + // This failed, image had no border. + CPPUNIT_ASSERT_EQUAL(OUString("0.99pt dashed #ed1c24"), + EPUBExportTest::getCss(aCssDoc, aClass, u"border")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testImageNospan) +{ + createDoc(u"image-nospan.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // Image outside a span was lost. + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:img", 1); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTable) +{ + createDoc(u"table.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + assertXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr/xhtml:td", 4); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTableRowSpan) +{ + createDoc(u"table-row-span.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This failed, row span wasn't exported. + assertXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[1]/xhtml:td[1]", "rowspan", "2"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTableCellBorder) +{ + createDoc(u"table-cell-border.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + + OUString aClass + = getXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[1]/xhtml:td[1]", "class"); + // This failed, cell border wasn't exported. + CPPUNIT_ASSERT_EQUAL(OUString("0.05pt solid #000000"), + EPUBExportTest::getCss(aCssDoc, aClass, u"border-left")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTableCellWidth) +{ + createDoc(u"table-cell-width.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + OUString aClass1 + = getXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[1]/xhtml:td[1]", "class"); + OUString aClass2 + = getXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[1]/xhtml:td[2]", "class"); + OUString aClass3 + = getXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[1]/xhtml:td[3]", "class"); + // These failed, all widths were 0. + CPPUNIT_ASSERT_GREATER(EPUBExportTest::getCss(aCssDoc, aClass2, u"width").toDouble(), + EPUBExportTest::getCss(aCssDoc, aClass1, u"width").toDouble()); + CPPUNIT_ASSERT_GREATER(EPUBExportTest::getCss(aCssDoc, aClass3, u"width").toDouble(), + EPUBExportTest::getCss(aCssDoc, aClass1, u"width").toDouble()); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTableRowHeight) +{ + createDoc(u"table-row-height.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + OUString aClass1 = getXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[1]", "class"); + OUString aClass2 = getXPath(mpXmlDoc, "//xhtml:table/xhtml:tbody/xhtml:tr[2]", "class"); + // These failed, both heights were 0. + CPPUNIT_ASSERT_GREATER(EPUBExportTest::getCss(aCssDoc, aClass2, u"height").toDouble(), + EPUBExportTest::getCss(aCssDoc, aClass1, u"height").toDouble()); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testLink) +{ + createDoc(u"link.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + assertXPathContent(mpXmlDoc, "//xhtml:p/xhtml:a/xhtml:span", "https://libreoffice.org/"); + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:a", "href", "https://libreoffice.org/"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testLinkInvalid) +{ + createDoc(u"link-invalid.odt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This was 1, invalid relative link was not filtered out. + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:a", 0); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testLinkCharFormat) +{ + createDoc(u"link-charformat.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // was lost, link text having a char format was missing. + assertXPathContent(mpXmlDoc, "//xhtml:p/xhtml:a/xhtml:span", "https://libreoffice.org/"); + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:a", "href", "https://libreoffice.org/"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testLinkNamedCharFormat) +{ + // Character properties from named character style on hyperlink was lost. + createDoc(u"link-namedcharformat.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + // This failed, there was no span inside the hyperlink. + assertXPathContent(mpXmlDoc, "//xhtml:p/xhtml:a/xhtml:span", "http://libreoffice.org"); + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:a", "href", "http://libreoffice.org/"); + + OUString aClass = getXPath(mpXmlDoc, "//xhtml:p/xhtml:a/xhtml:span", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("#ff0000"), EPUBExportTest::getCss(aCssDoc, aClass, u"color")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTableWidth) +{ + createDoc(u"table-width.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + + OUString aClass = getXPath(mpXmlDoc, "//xhtml:table", "class"); + // This failed, relative total width of table was lost. + CPPUNIT_ASSERT_EQUAL(OUString("50%"), EPUBExportTest::getCss(aCssDoc, aClass, u"width")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTextBox) +{ + createDoc(u"text-box.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + + // This failed, image with caption was lost. + assertXPath(mpXmlDoc, "//xhtml:img", "class", "frame1"); + // Expected spans: + // 1) break after the image + // 2) "Illustration " + // 3) The sequence field, this was missing (was ": foo" instead). + assertXPathContent(mpXmlDoc, "//xhtml:div/xhtml:p/xhtml:span[3]", "1"); + + OUString aClass = getXPath(mpXmlDoc, "//xhtml:div/xhtml:p/xhtml:span[3]", "class"); + // This failed, the 3rd span was not italic. + CPPUNIT_ASSERT_EQUAL(OUString("italic"), + EPUBExportTest::getCss(aCssDoc, aClass, u"font-style")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testFontEmbedding) +{ +#if !defined(MACOSX) + createDoc(u"font-embedding.fodt", {}); + + // Make sure that the params of defineEmbeddedFont() are all handled. + // librevenge:name + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + // 'SketchFlow Print' or ''SketchFlow Print1' + CPPUNIT_ASSERT(EPUBExportTest::getCss(aCssDoc, "font-face", u"font-family") + .startsWith("'SketchFlow Print")); + // librevenge:mime-type + mpXmlDoc = parseExport("OEBPS/content.opf"); + assertXPath(mpXmlDoc, "/opf:package/opf:manifest/opf:item[@href='fonts/font0001.otf']", + "media-type", "application/vnd.ms-opentype"); + // office:binary-data + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/fonts/font0001.otf")); + // librevenge:font-style + CPPUNIT_ASSERT_EQUAL(OUString("normal"), + EPUBExportTest::getCss(aCssDoc, "font-face", u"font-style")); + // librevenge:font-weight + CPPUNIT_ASSERT_EQUAL(OUString("normal"), + EPUBExportTest::getCss(aCssDoc, "font-face", u"font-weight")); +#endif +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testImageLink) +{ + createDoc(u"image-link.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // This failed, image was missing. + assertXPath(mpXmlDoc, "//xhtml:p/xhtml:a/xhtml:img", 1); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testFootnote) +{ + createDoc(u"footnote.fodt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // These were missing, footnote was lost. + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:p/xhtml:sup/xhtml:a", "type", "noteref"); + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:aside", "type", "footnote"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testPopup) +{ + createDoc(u"popup.odt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // Test image popup anchor. + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:p[1]/xhtml:a", "type", "noteref"); + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:p[1]/xhtml:a/xhtml:img", 1); + // Test image popup content. + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:aside[1]", "type", "footnote"); + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:aside[1]/xhtml:img", 1); + + // Test text popup anchor. + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:p[2]/xhtml:span/xhtml:a", "type", "noteref"); + assertXPathContent(mpXmlDoc, "//xhtml:body/xhtml:p[2]/xhtml:span/xhtml:a", "link"); + // Test text popup content. + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:aside[2]", "type", "footnote"); + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:aside[2]/xhtml:img", 1); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testPopupMedia) +{ + // This is the same as testPopup(), but the links point to images in the + // default media directory, not in the document directory. + createDoc(u"popup-media.odt", {}); + + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // Test image popup anchor. This failed, number of XPath nodes was 0. + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:p[1]/xhtml:a", "type", "noteref"); + assertXPath(mpXmlDoc, "//xhtml:body/xhtml:p[1]/xhtml:a/xhtml:img", 1); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testPopupAPI) +{ + // Make sure that the popup works with data from a media directory. + OUString aMediaDir = m_directories.getURLFromSrc(DATA_DIRECTORY) + "popup"; + uno::Sequence aFilterData( + comphelper::InitPropertySequence({ { "RVNGMediaDir", uno::Any(aMediaDir) } })); + createDoc(u"popup-api.odt", aFilterData); + + // We have a non-empty anchor image. + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + OUString aAnchor = getXPath(mpXmlDoc, "//xhtml:body/xhtml:p[1]/xhtml:a/xhtml:img", "src"); + CPPUNIT_ASSERT(!aAnchor.isEmpty()); + // We have a non-empty popup image. + OUString aData = getXPath(mpXmlDoc, "//xhtml:body/xhtml:aside[1]/xhtml:img", "src"); + CPPUNIT_ASSERT(!aData.isEmpty()); + // The anchor is different from the popup image. + CPPUNIT_ASSERT(aAnchor != aData); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testPageSize) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { { "EPUBLayoutMethod", + uno::Any(static_cast(libepubgen::EPUB_LAYOUT_METHOD_FIXED)) } })); + createDoc(u"hello.fodt", aFilterData); + + // This failed, viewport was empty, so page size was lost. + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + // 21,59cm x 27.94cm (letter). + assertXPath(mpXmlDoc, "/xhtml:html/xhtml:head/xhtml:meta[@name='viewport']", "content", + "width=816, height=1056"); + + mpXmlDoc = parseExport("OEBPS/images/image0001.svg"); + // This was 288mm, logic->logic conversion input was a pixel value. + assertXPath(mpXmlDoc, "/svg:svg", "width", "216mm"); + assertXPath(mpXmlDoc, "/svg:svg", "height", "279mm"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testSVG) +{ + uno::Sequence aFilterData(comphelper::InitPropertySequence( + { { "EPUBLayoutMethod", + uno::Any(static_cast(libepubgen::EPUB_LAYOUT_METHOD_FIXED)) } })); + createDoc(u"hello.fodt", aFilterData); + + CPPUNIT_ASSERT(mxZipFile->hasByName("OEBPS/images/image0001.svg")); + uno::Reference xInputStream( + mxZipFile->getByName("OEBPS/images/image0001.svg"), uno::UNO_QUERY); + std::unique_ptr pStream(utl::UcbStreamHelper::CreateStream(xInputStream, true)); + + SvMemoryStream aMemoryStream; + aMemoryStream.WriteStream(*pStream); + OString aExpected("\n\n o3tl::make_unsigned(aExpected.getLength())); + + // This failed, there was a '(aMemoryStream.GetData()), aExpected.getLength()); + CPPUNIT_ASSERT_EQUAL(aExpected, aActual); + + // This failed, we used the xlink attribute namespace, but we did not + // define its URL. + mpXmlDoc = parseExport("OEBPS/images/image0001.svg"); + assertXPathNSDef(mpXmlDoc, "/svg:svg", u"xlink", u"http://www.w3.org/1999/xlink"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTdf115623SingleWritingMode) +{ + // Simple page that has single writing mode should work. + createDoc(u"tdf115623-single-writing-mode.odt", {}); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + OUString aClass = getXPath(mpXmlDoc, "//xhtml:body", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("vertical-rl"), + EPUBExportTest::getCss(aCssDoc, aClass, u"writing-mode")); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTdf115623SplitByChapter) +{ + createDoc(u"tdf115623-split-by-chapter.odt", {}); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + { + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + OUString aClass = getXPath(mpXmlDoc, "//xhtml:body", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("vertical-rl"), + EPUBExportTest::getCss(aCssDoc, aClass, u"writing-mode")); + } + // Split HTML should keep the same writing-mode. + { + mpXmlDoc = parseExport("OEBPS/sections/section0002.xhtml"); + OUString aClass = getXPath(mpXmlDoc, "//xhtml:body", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("vertical-rl"), + EPUBExportTest::getCss(aCssDoc, aClass, u"writing-mode")); + } +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testTdf115623ManyPageSpans) +{ + createDoc(u"tdf115623-many-pagespans.odt", {}); + std::map> aCssDoc = parseCss("OEBPS/styles/stylesheet.css"); + // Two pages should have different writing modes. + { + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + OUString aClass = getXPath(mpXmlDoc, "//xhtml:body", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("vertical-rl"), + EPUBExportTest::getCss(aCssDoc, aClass, u"writing-mode")); + } + { + mpXmlDoc = parseExport("OEBPS/sections/section0002.xhtml"); + OUString aClass = getXPath(mpXmlDoc, "//xhtml:body", "class"); + CPPUNIT_ASSERT_EQUAL(OUString("horizontal-tb"), + EPUBExportTest::getCss(aCssDoc, aClass, u"writing-mode")); + } +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testSimpleRuby) +{ + createDoc(u"simple-ruby.odt", {}); + mpXmlDoc = parseExport("OEBPS/sections/section0001.xhtml"); + assertXPathContent(mpXmlDoc, "//xhtml:body/xhtml:p/xhtml:ruby/xhtml:span", "base text"); + assertXPathContent(mpXmlDoc, "//xhtml:body/xhtml:p/xhtml:ruby/xhtml:rt", "ruby text"); +} + +CPPUNIT_TEST_FIXTURE(EPUBExportTest, testAbi11105) +{ + // This crashed because the paragraph style "P5" which had a master-page-name + // appeared in a table cell messed up page spans. + createDoc(u"abi11105.abw", {}); +} +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/ImportTest.cxx b/writerperfect/qa/unit/ImportTest.cxx new file mode 100644 index 000000000..ef58118b0 --- /dev/null +++ b/writerperfect/qa/unit/ImportTest.cxx @@ -0,0 +1,124 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "WpftFilterFixture.hxx" +#include "WpftLoader.hxx" + +namespace +{ +namespace beans = css::beans; +namespace container = css::container; +namespace document = css::document; +namespace lang = css::lang; +namespace sheet = css::sheet; +namespace table = css::table; +namespace uno = css::uno; + +using uno::UNO_QUERY; + +using writerperfect::test::WpftLoader; + +class ImportTest : public writerperfect::test::WpftFilterFixture +{ +public: + virtual void setUp() override; + + void testWK3WithFM3(); + + CPPUNIT_TEST_SUITE(ImportTest); + CPPUNIT_TEST(testWK3WithFM3); + CPPUNIT_TEST_SUITE_END(); + +private: + WpftLoader createCalcLoader(std::u16string_view rFile) const; + + WpftLoader createLoader(const OUString& rUrl, const OUString& rFactoryUrl) const; + + OUString makeUrl(std::u16string_view rFile) const; + +private: + uno::Reference m_xFilterFactory; +}; + +void ImportTest::setUp() +{ + writerperfect::test::WpftFilterFixture::setUp(); + + m_xFilterFactory.set( + m_xFactory->createInstanceWithContext("com.sun.star.document.FilterFactory", m_xContext), + UNO_QUERY); + assert(m_xFilterFactory.is()); +} + +void ImportTest::testWK3WithFM3() +{ + WpftLoader aLoader(createCalcLoader(u"SOLVE.WK3")); + uno::Reference xDoc(aLoader.getDocument(), UNO_QUERY); + CPPUNIT_ASSERT(xDoc.is()); + uno::Reference xSheets(xDoc->getSheets(), UNO_QUERY); + CPPUNIT_ASSERT(xSheets.is()); + uno::Reference xSheet(xSheets->getByIndex(0), UNO_QUERY); + CPPUNIT_ASSERT(xSheet.is()); + uno::Reference xCellProps(xSheet->getCellByPosition(1, 1), UNO_QUERY); + CPPUNIT_ASSERT(xCellProps.is()); + sal_Int32 nCharColor = 0; + CPPUNIT_ASSERT(xCellProps->getPropertyValue("CharColor") >>= nCharColor); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x0000ff), nCharColor); // blue text +} + +WpftLoader ImportTest::createCalcLoader(std::u16string_view rFile) const +{ + return createLoader(makeUrl(rFile), "private:factory/scalc"); +} + +WpftLoader ImportTest::createLoader(const OUString& rUrl, const OUString& rFactoryUrl) const +{ + utl::MediaDescriptor aDesc; + aDesc[utl::MediaDescriptor::PROP_URL] <<= rUrl; + aDesc[utl::MediaDescriptor::PROP_READONLY] <<= true; + uno::Sequence lDesc(aDesc.getAsConstPropertyValueList()); + m_xTypeDetection->queryTypeByDescriptor(lDesc, true); + aDesc = lDesc; + OUString sFilter; + aDesc[utl::MediaDescriptor::PROP_FILTERNAME] >>= sFilter; + CPPUNIT_ASSERT(!sFilter.isEmpty()); + const uno::Reference xFilter(m_xFilterFactory->createInstance(sFilter), + UNO_QUERY); + CPPUNIT_ASSERT(xFilter.is()); + return WpftLoader(rUrl, xFilter, rFactoryUrl, m_xDesktop, m_xTypeMap, m_xContext); +} + +OUString ImportTest::makeUrl(std::u16string_view rFile) const +{ + return const_cast(this)->m_directories.getURLFromSrc( + OUStringConcatenation(OUString::Concat("/" TEST_DIR "/") + rFile)); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ImportTest); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/PresentationImportTest.cxx b/writerperfect/qa/unit/PresentationImportTest.cxx new file mode 100644 index 000000000..0c29c7269 --- /dev/null +++ b/writerperfect/qa/unit/PresentationImportTest.cxx @@ -0,0 +1,156 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include "WpftFilterFixture.hxx" +#include "WpftLoader.hxx" +#include "wpftimport.hxx" + +namespace +{ +namespace uno = css::uno; + +class PresentationImportFilter : public writerperfect::ImportFilter +{ +public: + explicit PresentationImportFilter(const uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pWindow, librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) override; + + static void generate(librevenge::RVNGPresentationInterface& rDocument); +}; + +bool PresentationImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream&, + OdpGenerator& rGenerator, utl::MediaDescriptor&) +{ + PresentationImportFilter::generate(rGenerator); + return true; +} + +bool PresentationImportFilter::doDetectFormat(librevenge::RVNGInputStream&, OUString& rTypeName) +{ + rTypeName = "WpftDummyPresentation"; + return true; +} + +// XServiceInfo +OUString SAL_CALL PresentationImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Wpft.QA.PresentationImportFilter"; +} + +sal_Bool SAL_CALL PresentationImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +uno::Sequence SAL_CALL PresentationImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +void PresentationImportFilter::generate(librevenge::RVNGPresentationInterface& rDocument) +{ + using namespace librevenge; + + rDocument.startDocument(RVNGPropertyList()); + RVNGPropertyList aProps; + aProps.insert("svg:width", 800); + aProps.insert("svg:height", 600); + rDocument.startSlide(aProps); + aProps.clear(); + aProps.insert("svg:x", 50); + aProps.insert("svg:y", 50); + aProps.insert("svg:width", 200); + aProps.insert("svg:height", 100); + rDocument.startTextObject(aProps); + rDocument.openParagraph(RVNGPropertyList()); + rDocument.openSpan(RVNGPropertyList()); + rDocument.insertText("My hovercraft is full of eels."); + rDocument.closeSpan(); + rDocument.closeParagraph(); + rDocument.endTextObject(); + rDocument.endSlide(); + rDocument.endDocument(); +} +} + +namespace +{ +class PresentationImportTest : public writerperfect::test::WpftFilterFixture +{ +public: + void test(); + + CPPUNIT_TEST_SUITE(PresentationImportTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +void PresentationImportTest::test() +{ + using namespace css; + + rtl::Reference xFilter{ new PresentationImportFilter(m_xContext) }; + writerperfect::test::WpftLoader aLoader(createDummyInput(), xFilter, "private:factory/simpress", + m_xDesktop, m_xContext); + + uno::Reference xDoc(aLoader.getDocument(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xDoc.is()); + uno::Reference xPages = xDoc->getDrawPages(); + CPPUNIT_ASSERT(xPages.is()); + auto aPage = xPages->getByIndex(0); + uno::Reference xPageProps; + CPPUNIT_ASSERT(aPage >>= xPageProps); + CPPUNIT_ASSERT(xPageProps.is()); + sal_Int32 nProp = 0; + CPPUNIT_ASSERT(xPageProps->getPropertyValue("Height") >>= nProp); + CPPUNIT_ASSERT_EQUAL(sal_Int32(600), nProp); + CPPUNIT_ASSERT(xPageProps->getPropertyValue("Width") >>= nProp); + CPPUNIT_ASSERT_EQUAL(sal_Int32(800), nProp); + uno::Reference xShapes(xPageProps, uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapes.is()); + auto aShape = xShapes->getByIndex(0); + uno::Reference xShapeDesc; + CPPUNIT_ASSERT(aShape >>= xShapeDesc); + CPPUNIT_ASSERT(xShapeDesc.is()); + CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.TextShape"), xShapeDesc->getShapeType()); + uno::Reference xText(xShapeDesc, uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("My hovercraft is full of eels."), xText->getString()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(PresentationImportTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/SpreadsheetImportTest.cxx b/writerperfect/qa/unit/SpreadsheetImportTest.cxx new file mode 100644 index 000000000..3c5de090c --- /dev/null +++ b/writerperfect/qa/unit/SpreadsheetImportTest.cxx @@ -0,0 +1,138 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include "WpftFilterFixture.hxx" +#include "WpftLoader.hxx" +#include "wpftimport.hxx" + +namespace +{ +namespace uno = css::uno; + +class SpreadsheetImportFilter : public writerperfect::ImportFilter +{ +public: + explicit SpreadsheetImportFilter(const uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pWindow, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) override; + + static void generate(librevenge::RVNGSpreadsheetInterface& rDocument); +}; + +bool SpreadsheetImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream&, + OdsGenerator& rGenerator, utl::MediaDescriptor&) +{ + SpreadsheetImportFilter::generate(rGenerator); + return true; +} + +bool SpreadsheetImportFilter::doDetectFormat(librevenge::RVNGInputStream&, OUString& rTypeName) +{ + rTypeName = "WpftDummySpreadsheet"; + return true; +} + +// XServiceInfo +OUString SAL_CALL SpreadsheetImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Wpft.QA.SpreadsheetImportFilter"; +} + +sal_Bool SAL_CALL SpreadsheetImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +uno::Sequence SAL_CALL SpreadsheetImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +void SpreadsheetImportFilter::generate(librevenge::RVNGSpreadsheetInterface& rDocument) +{ + using namespace librevenge; + + rDocument.startDocument(RVNGPropertyList()); + rDocument.openPageSpan(RVNGPropertyList()); + rDocument.openSheet(RVNGPropertyList()); + rDocument.openSheetRow(RVNGPropertyList()); + rDocument.openSheetCell(RVNGPropertyList()); + rDocument.openParagraph(RVNGPropertyList()); + rDocument.openSpan(RVNGPropertyList()); + rDocument.insertText("My hovercraft is full of eels."); + rDocument.closeSpan(); + rDocument.closeParagraph(); + rDocument.closeSheetCell(); + rDocument.closeSheetRow(); + rDocument.closeSheet(); + rDocument.closePageSpan(); + rDocument.endDocument(); +} +} + +namespace +{ +class SpreadsheetImportTest : public writerperfect::test::WpftFilterFixture +{ +public: + void test(); + + CPPUNIT_TEST_SUITE(SpreadsheetImportTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +void SpreadsheetImportTest::test() +{ + using namespace css; + + rtl::Reference xFilter{ new SpreadsheetImportFilter(m_xContext) }; + writerperfect::test::WpftLoader aLoader(createDummyInput(), xFilter, "private:factory/scalc", + m_xDesktop, m_xContext); + + uno::Reference xDoc(aLoader.getDocument(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xDoc.is()); + uno::Reference xSheets(xDoc->getSheets(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xSheets.is()); + uno::Reference xSheet(xSheets->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xSheet.is()); + uno::Reference xCell = xSheet->getCellByPosition(0, 0); + CPPUNIT_ASSERT(xCell.is()); + CPPUNIT_ASSERT_EQUAL(table::CellContentType_TEXT, xCell->getType()); + CPPUNIT_ASSERT_EQUAL(OUString("My hovercraft is full of eels."), xCell->getFormula()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SpreadsheetImportTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/TextImportTest.cxx b/writerperfect/qa/unit/TextImportTest.cxx new file mode 100644 index 000000000..c1ff7ad75 --- /dev/null +++ b/writerperfect/qa/unit/TextImportTest.cxx @@ -0,0 +1,145 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include "WpftFilterFixture.hxx" +#include "WpftLoader.hxx" +#include "wpftimport.hxx" + +namespace +{ +namespace uno = css::uno; + +class TextImportFilter : public writerperfect::ImportFilter +{ +public: + explicit TextImportFilter(const uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pWindow, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) override; + + static void generate(librevenge::RVNGTextInterface& rDocument); +}; + +bool TextImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream&, + OdtGenerator& rGenerator, utl::MediaDescriptor&) +{ + TextImportFilter::generate(rGenerator); + return true; +} + +bool TextImportFilter::doDetectFormat(librevenge::RVNGInputStream&, OUString& rTypeName) +{ + rTypeName = "WpftDummyText"; + return true; +} + +// XServiceInfo +OUString SAL_CALL TextImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Wpft.QA.TextImportFilter"; +} + +sal_Bool SAL_CALL TextImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +uno::Sequence SAL_CALL TextImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +void TextImportFilter::generate(librevenge::RVNGTextInterface& rDocument) +{ + using namespace librevenge; + + rDocument.startDocument(RVNGPropertyList()); + rDocument.openPageSpan(RVNGPropertyList()); + rDocument.openParagraph(RVNGPropertyList()); + rDocument.openSpan(RVNGPropertyList()); + rDocument.insertText("My hovercraft is full of eels."); + rDocument.closeSpan(); + rDocument.closeParagraph(); + rDocument.closePageSpan(); + rDocument.endDocument(); +} +} + +namespace +{ +class TextImportTest : public writerperfect::test::WpftFilterFixture +{ +public: + void test(); + + CPPUNIT_TEST_SUITE(TextImportTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +void TextImportTest::test() +{ + using namespace css; + + rtl::Reference xFilter{ new TextImportFilter(m_xContext) }; + writerperfect::test::WpftLoader aLoader(createDummyInput(), xFilter, "private:factory/swriter", + m_xDesktop, m_xContext); + + uno::Reference xDoc(aLoader.getDocument(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xDoc.is()); + uno::Reference xParaAccess(xDoc->getText(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xParaAccess.is()); + uno::Reference xParas = xParaAccess->createEnumeration(); + CPPUNIT_ASSERT(xParas.is()); + CPPUNIT_ASSERT(xParas->hasMoreElements()); + uno::Reference xPortionsAccess(xParas->nextElement(), + uno::UNO_QUERY); + CPPUNIT_ASSERT(xPortionsAccess.is()); + uno::Reference xPortions = xPortionsAccess->createEnumeration(); + CPPUNIT_ASSERT(xPortions.is()); + CPPUNIT_ASSERT(xPortions->hasMoreElements()); + uno::Reference xPortionProps(xPortions->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xPortionProps.is()); + OUString aPortionType; + CPPUNIT_ASSERT(xPortionProps->getPropertyValue("TextPortionType") >>= aPortionType); + CPPUNIT_ASSERT_EQUAL(OUString("Text"), aPortionType); + uno::Reference xPortion(xPortionProps, uno::UNO_QUERY); + CPPUNIT_ASSERT(xPortion.is()); + CPPUNIT_ASSERT_EQUAL(OUString("My hovercraft is full of eels."), xPortion->getString()); + CPPUNIT_ASSERT(!xPortions->hasMoreElements()); + CPPUNIT_ASSERT(!xParas->hasMoreElements()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(TextImportTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WPXSvStreamTest.cxx b/writerperfect/qa/unit/WPXSvStreamTest.cxx new file mode 100644 index 000000000..0bd7b7b15 --- /dev/null +++ b/writerperfect/qa/unit/WPXSvStreamTest.cxx @@ -0,0 +1,355 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +namespace io = com::sun::star::io; +namespace ucb = com::sun::star::ucb; +namespace uno = com::sun::star::uno; + +using std::shared_ptr; +using std::unique_ptr; + +using librevenge::RVNGInputStream; +using librevenge::RVNG_SEEK_CUR; +using librevenge::RVNG_SEEK_END; +using librevenge::RVNG_SEEK_SET; + +using std::equal; + +using writerperfect::WPXSvInputStream; + +namespace +{ +class WPXSvStreamTest : public test::BootstrapFixture +{ +public: + CPPUNIT_TEST_SUITE(WPXSvStreamTest); + CPPUNIT_TEST(testRead); + CPPUNIT_TEST(testSeekSet); + CPPUNIT_TEST(testSeekCur); + CPPUNIT_TEST(testSeekEnd); + CPPUNIT_TEST(testStructured); + CPPUNIT_TEST_SUITE_END(); + +private: + void testRead(); + void testSeekSet(); + void testSeekCur(); + void testSeekEnd(); + void testStructured(); +}; + +const char aText[] = "hello world"; +constexpr OUStringLiteral aOLEFile = u"/writerperfect/qa/unit/data/stream/fdo40686-1.doc"; +constexpr OUStringLiteral aZipFile = u"/writerperfect/qa/unit/data/stream/test.odt"; + +shared_ptr lcl_createStream() +{ + using comphelper::SequenceInputStream; + + const css::uno::Sequence aData(reinterpret_cast(aText), + sizeof aText); + const uno::Reference xInputStream(new SequenceInputStream(aData)); + + shared_ptr pInputStream; + if (xInputStream.is()) + pInputStream = std::make_shared(xInputStream); + + return pInputStream; +} + +shared_ptr lcl_createStreamForURL(const OUString& rURL) +{ + using uno::Reference; + using uno::UNO_QUERY_THROW; + + const Reference xContext(comphelper::getProcessComponentContext(), + css::uno::UNO_SET_THROW); + const Reference xFileAccess( + xContext->getServiceManager()->createInstanceWithContext( + "com.sun.star.ucb.SimpleFileAccess", xContext), + UNO_QUERY_THROW); + const Reference xInputStream(xFileAccess->openFileRead(rURL), + css::uno::UNO_SET_THROW); + + return std::make_shared(xInputStream); +} + +void lcl_testSubStreams(const shared_ptr& pInput) +{ + shared_ptr pSubStream; + + // all valid substreams can be read + for (std::size_t i = 0; i != pInput->subStreamCount(); ++i) + { + std::ostringstream msg("opening substream "); + msg << i; + pSubStream.reset(pInput->getSubStreamById(i)); + CPPUNIT_ASSERT_MESSAGE(msg.str(), bool(pSubStream)); + } + + // invalid substreams cannot be read + pSubStream.reset(pInput->getSubStreamById(pInput->subStreamCount())); + CPPUNIT_ASSERT(!pSubStream); +} + +void WPXSvStreamTest::testRead() +{ + const shared_ptr pInput(lcl_createStream()); + const unsigned long nLen = sizeof aText; + + unsigned long nReadBytes = 0; + const unsigned char* pData = nullptr; + const unsigned char* const pTextOrig = reinterpret_cast(aText); + const unsigned char* pText = pTextOrig; + + // reading by small pieces + pData = pInput->read(1UL, nReadBytes); + CPPUNIT_ASSERT_EQUAL(1UL, nReadBytes); + CPPUNIT_ASSERT(equal(pText, pText + nReadBytes, pData)); + CPPUNIT_ASSERT(!pInput->isEnd()); + pText += nReadBytes; + + pData = pInput->read(2UL, nReadBytes); + CPPUNIT_ASSERT_EQUAL(2UL, nReadBytes); + CPPUNIT_ASSERT(equal(pText, pText + nReadBytes, pData)); + CPPUNIT_ASSERT(!pInput->isEnd()); + pText += nReadBytes; + + pData = pInput->read(3UL, nReadBytes); + CPPUNIT_ASSERT_EQUAL(3UL, nReadBytes); + CPPUNIT_ASSERT(equal(pText, pText + nReadBytes, pData)); + CPPUNIT_ASSERT(!pInput->isEnd()); + pText += nReadBytes; + + assert(nLen > 6); + pData = pInput->read(nLen - 6, nReadBytes); + CPPUNIT_ASSERT_EQUAL(nLen - 6, nReadBytes); + CPPUNIT_ASSERT(equal(pText, pText + nReadBytes, pData)); + CPPUNIT_ASSERT(pInput->isEnd()); + + // reading everything at once + pInput->seek(0, RVNG_SEEK_SET); + pText = pTextOrig; + + pData = pInput->read(nLen, nReadBytes); + CPPUNIT_ASSERT_EQUAL(nLen, nReadBytes); + CPPUNIT_ASSERT(equal(pText, pText + nReadBytes, pData)); + CPPUNIT_ASSERT(pInput->isEnd()); + + // trying to read too much + pInput->seek(0, RVNG_SEEK_SET); + pText = pTextOrig; + + pData = pInput->read(nLen + 1, nReadBytes); + CPPUNIT_ASSERT_EQUAL(nLen, nReadBytes); + CPPUNIT_ASSERT(equal(pText, pText + nReadBytes, pData)); + CPPUNIT_ASSERT(pInput->isEnd()); + + // trying to read nothing + pInput->seek(0, RVNG_SEEK_SET); + pData = pInput->read(0UL, nReadBytes); + CPPUNIT_ASSERT_EQUAL(0UL, nReadBytes); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT_EQUAL(pData, static_cast(nullptr)); + CPPUNIT_ASSERT(!pInput->isEnd()); +} + +void WPXSvStreamTest::testSeekSet() +{ + const shared_ptr pInput(lcl_createStream()); + const long nLen = sizeof aText; + + // check initial state + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + // valid seeks + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(0, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(1, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(1L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(nLen, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(nLen, pInput->tell()); + CPPUNIT_ASSERT(pInput->isEnd()); + + // go back to the beginning + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(0, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + + // invalid seeks + CPPUNIT_ASSERT(0 != pInput->seek(-1, RVNG_SEEK_SET)); + // Okay, this is not defined. But it is what the WPXSvInputStream + // does ATM and it is reasonable. + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT(0 != pInput->seek(nLen + 1, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(nLen, pInput->tell()); + CPPUNIT_ASSERT(pInput->isEnd()); +} + +void WPXSvStreamTest::testSeekCur() +{ + const shared_ptr pInput(lcl_createStream()); + const long nLen = sizeof aText; + + // check initial state + CPPUNIT_ASSERT(!pInput->isEnd()); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + + // valid seeks + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(0, RVNG_SEEK_CUR)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(1, RVNG_SEEK_CUR)); + CPPUNIT_ASSERT_EQUAL(1L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(-1, RVNG_SEEK_CUR)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + // go back to the beginning + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(0, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + + // invalid seeks + CPPUNIT_ASSERT(0 != pInput->seek(-1, RVNG_SEEK_CUR)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT(0 != pInput->seek(nLen + 1, RVNG_SEEK_CUR)); + CPPUNIT_ASSERT_EQUAL(nLen, pInput->tell()); + CPPUNIT_ASSERT(pInput->isEnd()); +} + +void WPXSvStreamTest::testSeekEnd() +{ + const shared_ptr pInput(lcl_createStream()); + const long nLen = sizeof aText; + + // check initial state + CPPUNIT_ASSERT(!pInput->isEnd()); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + + // valid seeks + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(0, RVNG_SEEK_END)); + CPPUNIT_ASSERT_EQUAL(nLen, pInput->tell()); + CPPUNIT_ASSERT(pInput->isEnd()); + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(-1, RVNG_SEEK_END)); + CPPUNIT_ASSERT_EQUAL(nLen - 1, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(-nLen, RVNG_SEEK_END)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); + + // go back to the beginning + CPPUNIT_ASSERT_EQUAL(0, pInput->seek(0, RVNG_SEEK_SET)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + + // invalid seeks + CPPUNIT_ASSERT(0 != pInput->seek(1, RVNG_SEEK_END)); + CPPUNIT_ASSERT_EQUAL(nLen, pInput->tell()); + CPPUNIT_ASSERT(pInput->isEnd()); + + CPPUNIT_ASSERT(0 != pInput->seek(-nLen - 1, RVNG_SEEK_END)); + CPPUNIT_ASSERT_EQUAL(0L, pInput->tell()); + CPPUNIT_ASSERT(!pInput->isEnd()); +} + +void WPXSvStreamTest::testStructured() +{ + // OLE2 + { + const shared_ptr pInput( + lcl_createStreamForURL(m_directories.getURLFromSrc(aOLEFile))); + assert(bool(pInput)); + + CPPUNIT_ASSERT(pInput->isStructured()); + CPPUNIT_ASSERT_EQUAL(static_cast(2), pInput->subStreamCount()); + lcl_testSubStreams(pInput); + + // check for existing substream + CPPUNIT_ASSERT(pInput->existsSubStream("WordDocument")); + unique_ptr pSubStream(pInput->getSubStreamByName("WordDocument")); + CPPUNIT_ASSERT(bool(pSubStream)); + CPPUNIT_ASSERT(!pSubStream->isEnd()); + + // check for not existing substream + CPPUNIT_ASSERT(!pInput->existsSubStream("foo")); + pSubStream.reset(pInput->getSubStreamByName("foo")); + CPPUNIT_ASSERT(!pSubStream); + } + + // Zip + { + const shared_ptr pInput( + lcl_createStreamForURL(m_directories.getURLFromSrc(aZipFile))); + assert(bool(pInput)); + + CPPUNIT_ASSERT(pInput->isStructured()); + CPPUNIT_ASSERT_EQUAL(static_cast(9), pInput->subStreamCount()); + lcl_testSubStreams(pInput); + + // check for existing substream + CPPUNIT_ASSERT(pInput->existsSubStream("content.xml")); + unique_ptr pSubStream(pInput->getSubStreamByName("content.xml")); + CPPUNIT_ASSERT(bool(pSubStream)); + CPPUNIT_ASSERT(!pSubStream->isEnd()); + + // check for not existing substream + CPPUNIT_ASSERT(!pInput->existsSubStream("foo")); + pSubStream.reset(pInput->getSubStreamByName("foo")); + CPPUNIT_ASSERT(!pSubStream); + } + + // not structured + { + const shared_ptr pInput(lcl_createStream()); + + CPPUNIT_ASSERT(!pInput->isStructured()); + CPPUNIT_ASSERT_EQUAL(static_cast(0), pInput->subStreamCount()); + CPPUNIT_ASSERT(!pInput->existsSubStream("foo")); + CPPUNIT_ASSERT(!pInput->getSubStreamByName("foo")); + CPPUNIT_ASSERT(!pInput->getSubStreamById(42)); + CPPUNIT_ASSERT(!pInput->subStreamName(42)); + } +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WPXSvStreamTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftCalcFilterTest.cxx b/writerperfect/qa/unit/WpftCalcFilterTest.cxx new file mode 100644 index 000000000..22d1d4f95 --- /dev/null +++ b/writerperfect/qa/unit/WpftCalcFilterTest.cxx @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftFilterTestBase.hxx" + +namespace +{ +class WpftCalcFilterTest : public writerperfect::test::WpftFilterTestBase +{ +public: + WpftCalcFilterTest(); + + void test(); + + CPPUNIT_TEST_SUITE(WpftCalcFilterTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +WpftCalcFilterTest::WpftCalcFilterTest() + : writerperfect::test::WpftFilterTestBase("private:factory/scalc") +{ +} + +void WpftCalcFilterTest::test() +{ + const writerperfect::test::WpftOptionalMap_t aEtonyekOptional{ + { "Numbers_2.numbers", REQUIRE_ETONYEK_VERSION(0, 1, 2) }, + }; + const writerperfect::test::WpftOptionalMap_t aMWAWOptional{ + { "JazzLotus.hqx", REQUIRE_MWAW_VERSION(0, 3, 17) }, + { "Multiplan_1.hqx", REQUIRE_MWAW_VERSION(0, 3, 14) }, + }; + const writerperfect::test::WpftOptionalMap_t aWpsOptional{ + { "Lotus123_3.123", REQUIRE_WPS_VERSION(0, 4, 5) }, + { "Lotus123_98.123", REQUIRE_WPS_VERSION(0, 4, 6) }, + { "Multiplan_3", REQUIRE_WPS_VERSION(0, 4, 9) }, + { "QuattroPro.wb1", REQUIRE_WPS_VERSION(0, 4, 8) }, + }; + + doTest("com.sun.star.comp.Calc.MWAWCalcImportFilter", + u"/writerperfect/qa/unit/data/calc/libmwaw/", aMWAWOptional); + doTest("com.sun.star.comp.Calc.MSWorksCalcImportFilter", + u"/writerperfect/qa/unit/data/calc/libwps/", aWpsOptional); + doTest("org.libreoffice.comp.Calc.NumbersImportFilter", + u"/writerperfect/qa/unit/data/calc/libetonyek/", aEtonyekOptional); + doTest("org.libreoffice.comp.Calc.StarOfficeCalcImportFilter", + u"/writerperfect/qa/unit/data/calc/libstaroffice/"); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WpftCalcFilterTest); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftDrawFilterTest.cxx b/writerperfect/qa/unit/WpftDrawFilterTest.cxx new file mode 100644 index 000000000..78168cdb9 --- /dev/null +++ b/writerperfect/qa/unit/WpftDrawFilterTest.cxx @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftFilterTestBase.hxx" + +namespace +{ +class WpftDrawFilterTest : public writerperfect::test::WpftFilterTestBase +{ +public: + WpftDrawFilterTest(); + + void test(); + + CPPUNIT_TEST_SUITE(WpftDrawFilterTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +WpftDrawFilterTest::WpftDrawFilterTest() + : writerperfect::test::WpftFilterTestBase("private:factory/sdraw") +{ +} + +void WpftDrawFilterTest::test() +{ + const writerperfect::test::WpftOptionalMap_t aMWAWOptional{ + { "Canvas_2.hqx", REQUIRE_MWAW_VERSION(0, 3, 17) }, + { "ClarisDraw.hqx", REQUIRE_MWAW_VERSION(0, 3, 5) }, + { "CorelPainter_3_win.rif", REQUIRE_MWAW_VERSION(0, 3, 15) }, + { "CorelPainter_10", REQUIRE_MWAW_VERSION(0, 3, 15) }, + { "CricketDraw_1.0.hqx", REQUIRE_MWAW_VERSION(0, 3, 8) }, + { "CricketDraw_1.1.hqx", REQUIRE_MWAW_VERSION(0, 3, 8) }, + { "DrawingTable_1.hqx", REQUIRE_MWAW_VERSION(0, 3, 17) }, + { "FreeHand_1.0.hqx", REQUIRE_MWAW_VERSION(0, 3, 8) }, + { "FreeHand_2.0.hqx", REQUIRE_MWAW_VERSION(0, 3, 8) }, + { "MacDraft_1.0.hqx", REQUIRE_MWAW_VERSION(0, 3, 5) }, + { "MacDraft_5.5.drw", REQUIRE_MWAW_VERSION(0, 3, 6) }, + { "MacDraw_0.hqx", REQUIRE_MWAW_VERSION(0, 3, 2) }, + { "MacDraw_1.hqx", REQUIRE_MWAW_VERSION(0, 3, 2) }, + { "MacDraw_II.hqx", REQUIRE_MWAW_VERSION(0, 3, 3) }, + { "MacDraw_Pro_1.0.hqx", REQUIRE_MWAW_VERSION(0, 3, 4) }, + { "ReadySetGo_1", REQUIRE_MWAW_VERSION(0, 3, 21) }, + { "Scoop_1", REQUIRE_MWAW_VERSION(0, 3, 21) }, + }; + const writerperfect::test::WpftOptionalMap_t aStarOfficeOptional{ + { "Draw_3.1.sda", REQUIRE_STAROFFICE_VERSION(0, 0, 1) }, + }; + + doTest("com.sun.star.comp.Draw.CDRImportFilter", u"/writerperfect/qa/unit/data/draw/libcdr/"); + doTest("com.sun.star.comp.Draw.CMXImportFilter", + u"/writerperfect/qa/unit/data/draw/libcdr-cmx/"); + doTest("com.sun.star.comp.Draw.FreehandImportFilter", + u"/writerperfect/qa/unit/data/draw/libfreehand/"); + doTest("com.sun.star.comp.Draw.MSPUBImportFilter", + u"/writerperfect/qa/unit/data/draw/libmspub/"); + doTest("com.sun.star.comp.Draw.MWAWDrawImportFilter", + u"/writerperfect/qa/unit/data/draw/libmwaw/", aMWAWOptional); + doTest("com.sun.star.comp.Draw.VisioImportFilter", + u"/writerperfect/qa/unit/data/draw/libvisio/"); + doTest("com.sun.star.comp.Draw.WPGImportFilter", u"/writerperfect/qa/unit/data/draw/libwpg/"); + doTest("org.libreoffice.comp.Draw.PageMakerImportFilter", + u"/writerperfect/qa/unit/data/draw/libpagemaker/"); + doTest("org.libreoffice.comp.Draw.StarOfficeDrawImportFilter", + u"/writerperfect/qa/unit/data/draw/libstaroffice/", aStarOfficeOptional); + doTest("org.libreoffice.comp.Draw.ZMFImportFilter", + u"/writerperfect/qa/unit/data/draw/libzmf/"); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WpftDrawFilterTest); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftFilterFixture.cxx b/writerperfect/qa/unit/WpftFilterFixture.cxx new file mode 100644 index 000000000..142ff22c3 --- /dev/null +++ b/writerperfect/qa/unit/WpftFilterFixture.cxx @@ -0,0 +1,35 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftFilterFixture.hxx" + +#include +#include +#include + +namespace document = com::sun::star::document; +namespace frame = com::sun::star::frame; +namespace uno = com::sun::star::uno; + +namespace writerperfect::test +{ +void WpftFilterFixture::setUp() +{ + ::test::BootstrapFixture::setUp(); + + m_xDesktop = frame::theDesktop::get(m_xContext); + + m_xTypeDetection.set( + m_xFactory->createInstanceWithContext("com.sun.star.document.TypeDetection", m_xContext), + uno::UNO_QUERY_THROW); + m_xTypeMap.set(m_xTypeDetection, uno::UNO_QUERY_THROW); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftFilterFixture.hxx b/writerperfect/qa/unit/WpftFilterFixture.hxx new file mode 100644 index 000000000..2fdd6a2f8 --- /dev/null +++ b/writerperfect/qa/unit/WpftFilterFixture.hxx @@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "wpftqahelperdllapi.h" + +#include +#include + +#include + +#include + +#define REQUIRE_VERSION(major, minor, micro, req_major, req_minor, req_micro) \ + (major) > (req_major) \ + || ((major) == (req_major) \ + && ((minor) > (req_minor) || ((minor) == (req_minor) && ((micro) >= (req_micro))))) + +#define REQUIRE_EBOOK_VERSION(major, minor, micro) \ + REQUIRE_VERSION(EBOOK_VERSION_MAJOR, EBOOK_VERSION_MINOR, EBOOK_VERSION_MICRO, major, minor, \ + micro) + +#define REQUIRE_ETONYEK_VERSION(major, minor, micro) \ + REQUIRE_VERSION(ETONYEK_VERSION_MAJOR, ETONYEK_VERSION_MINOR, ETONYEK_VERSION_MICRO, major, \ + minor, micro) + +#define REQUIRE_MWAW_VERSION(major, minor, micro) \ + REQUIRE_VERSION(MWAW_VERSION_MAJOR, MWAW_VERSION_MINOR, MWAW_VERSION_MICRO, major, minor, micro) + +#define REQUIRE_STAROFFICE_VERSION(major, minor, micro) \ + REQUIRE_VERSION(STAROFFICE_VERSION_MAJOR, STAROFFICE_VERSION_MINOR, STAROFFICE_VERSION_MICRO, \ + major, minor, micro) + +#define REQUIRE_WPS_VERSION(major, minor, micro) \ + REQUIRE_VERSION(WPS_VERSION_MAJOR, WPS_VERSION_MINOR, WPS_VERSION_MICRO, major, minor, micro) + +namespace com +{ +namespace sun +{ +namespace star +{ +namespace container +{ +class XNameAccess; +} +namespace document +{ +class XTypeDetection; +} +namespace frame +{ +class XDesktop2; +} +} +} +} + +namespace writerperfect +{ +namespace test +{ +class WPFTQAHELPER_DLLPUBLIC WpftFilterFixture : public ::test::BootstrapFixture +{ +public: + virtual void setUp() override; + +protected: + css::uno::Reference m_xDesktop; + css::uno::Reference m_xTypeDetection; + css::uno::Reference m_xTypeMap; +}; +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftFilterTestBase.cxx b/writerperfect/qa/unit/WpftFilterTestBase.cxx new file mode 100644 index 000000000..ca9dcc317 --- /dev/null +++ b/writerperfect/qa/unit/WpftFilterTestBase.cxx @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftFilterTestBase.hxx" + +#include + +#include + +#include "WpftLoader.hxx" + +namespace uno = com::sun::star::uno; + +namespace writerperfect::test +{ +WpftFilterTestBase::WpftFilterTestBase(const OUString& rFactoryURL) + : ::test::FiltersTest() + , WpftFilterFixture() + , m_aFactoryURL(rFactoryURL) + , m_pOptionalMap(nullptr) +{ +} + +bool WpftFilterTestBase::load(const OUString&, const OUString& rURL, const OUString&, + SfxFilterFlags, SotClipboardFormatId, unsigned int) +{ + if (m_pOptionalMap) + { + // first check if this test file is supported by the used version of the library + const INetURLObject aUrl(rURL); + const WpftOptionalMap_t::const_iterator it(m_pOptionalMap->find(aUrl.getName())); + if ((it != m_pOptionalMap->end()) && !it->second) + return true; // skip the file + } + + const WpftLoader aLoader(rURL, m_xFilter, m_aFactoryURL, m_xDesktop, m_xTypeMap, m_xContext); + return aLoader.getDocument().is(); +} + +void WpftFilterTestBase::doTest(const OUString& rFilter, std::u16string_view rPath) +{ + m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW); + testDir(OUString(), m_directories.getURLFromSrc(rPath)); +} + +void WpftFilterTestBase::doTest(const OUString& rFilter, std::u16string_view rPath, + const WpftOptionalMap_t& rOptionalMap) +{ + m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW); + m_pOptionalMap = &rOptionalMap; + testDir(OUString(), m_directories.getURLFromSrc(rPath)); + m_pOptionalMap = nullptr; +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftFilterTestBase.hxx b/writerperfect/qa/unit/WpftFilterTestBase.hxx new file mode 100644 index 000000000..8f929e9f7 --- /dev/null +++ b/writerperfect/qa/unit/WpftFilterTestBase.hxx @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "wpftqahelperdllapi.h" + +#include +#include + +#include + +#include + +#include + +#include "WpftFilterFixture.hxx" + +namespace com +{ +namespace sun +{ +namespace star +{ +namespace document +{ +class XFilter; +} +} +} +} + +namespace writerperfect +{ +namespace test +{ +typedef std::unordered_map WpftOptionalMap_t; + +class WPFTQAHELPER_DLLPUBLIC WpftFilterTestBase : public ::test::FiltersTest, + public WpftFilterFixture +{ +public: + explicit WpftFilterTestBase(const OUString& rFactoryURL); + +protected: + void doTest(const OUString& rFilter, std::u16string_view rPath); + void doTest(const OUString& rFilter, std::u16string_view rPath, + const WpftOptionalMap_t& rOptionalMap); + +private: + virtual bool load(const OUString&, const OUString& rURL, const OUString&, SfxFilterFlags, + SotClipboardFormatId, unsigned int) override; + +private: + const OUString m_aFactoryURL; + css::uno::Reference m_xFilter; + const WpftOptionalMap_t* m_pOptionalMap; +}; +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftImpressFilterTest.cxx b/writerperfect/qa/unit/WpftImpressFilterTest.cxx new file mode 100644 index 000000000..9ff60296b --- /dev/null +++ b/writerperfect/qa/unit/WpftImpressFilterTest.cxx @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftFilterTestBase.hxx" + +namespace +{ +class WpftImpressFilterTest : public writerperfect::test::WpftFilterTestBase +{ +public: + WpftImpressFilterTest(); + + void test(); + + CPPUNIT_TEST_SUITE(WpftImpressFilterTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +WpftImpressFilterTest::WpftImpressFilterTest() + : writerperfect::test::WpftFilterTestBase("private:factory/simpress") +{ +} + +void WpftImpressFilterTest::test() +{ + const writerperfect::test::WpftOptionalMap_t aEtonyekOptional{ + { "Keynote_1.key", REQUIRE_ETONYEK_VERSION(0, 1, 8) }, + { "Keynote_2.key", REQUIRE_ETONYEK_VERSION(0, 1, 1) }, + { "Keynote_3.key", REQUIRE_ETONYEK_VERSION(0, 1, 1) }, + { "Keynote_6.key", REQUIRE_ETONYEK_VERSION(0, 1, 4) }, + }; + const writerperfect::test::WpftOptionalMap_t aMWAWOptional{ + { "ClarisWorks_6.0.cwk", REQUIRE_MWAW_VERSION(0, 3, 3) }, + { "PowerPoint_Mac_1", REQUIRE_MWAW_VERSION(0, 3, 9) }, + { "PowerPoint_Mac_2", REQUIRE_MWAW_VERSION(0, 3, 9) }, + { "PowerPoint_Mac_3", REQUIRE_MWAW_VERSION(0, 3, 9) }, + { "PowerPoint_Mac_4.ppt", REQUIRE_MWAW_VERSION(0, 3, 10) }, + { "PowerPoint_2.ppt", REQUIRE_MWAW_VERSION(0, 3, 10) }, + { "PowerPoint_3.ppt", REQUIRE_MWAW_VERSION(0, 3, 9) }, + { "PowerPoint_4.ppt", REQUIRE_MWAW_VERSION(0, 3, 10) }, + { "PowerPoint_7.ppt", REQUIRE_MWAW_VERSION(0, 3, 11) }, + }; + + doTest("org.libreoffice.comp.Impress.KeynoteImportFilter", + u"/writerperfect/qa/unit/data/impress/libetonyek/", aEtonyekOptional); + doTest("com.sun.star.comp.Impress.MWAWPresentationImportFilter", + u"/writerperfect/qa/unit/data/impress/libmwaw/", aMWAWOptional); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WpftImpressFilterTest); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftLoader.cxx b/writerperfect/qa/unit/WpftLoader.cxx new file mode 100644 index 000000000..d0809b909 --- /dev/null +++ b/writerperfect/qa/unit/WpftLoader.cxx @@ -0,0 +1,210 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftLoader.hxx" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace beans = com::sun::star::beans; +namespace container = com::sun::star::container; +namespace document = com::sun::star::document; +namespace frame = com::sun::star::frame; +namespace lang = com::sun::star::lang; +namespace ucb = com::sun::star::ucb; +namespace uno = com::sun::star::uno; +namespace util = com::sun::star::util; + +namespace writerperfect::test +{ +WpftLoader::WpftLoader(const OUString& rURL, + const css::uno::Reference& rxFilter, + const OUString& rFactoryURL, + const css::uno::Reference& rxDesktop, + const css::uno::Reference& rxTypeMap, + const css::uno::Reference& rxContext) + : m_aURL(rURL) + , m_aFactoryURL(rFactoryURL) + , m_xFilter(rxFilter) + , m_xDesktop(rxDesktop) + , m_xTypeMap(rxTypeMap) + , m_xContext(rxContext) +{ + if (!impl_load()) + impl_dispose(); +} + +WpftLoader::WpftLoader(const css::uno::Reference& rxInputStream, + const css::uno::Reference& rxFilter, + const OUString& rFactoryURL, + const css::uno::Reference& rxDesktop, + const css::uno::Reference& rxContext) + : m_xInputStream(rxInputStream) + , m_aFactoryURL(rFactoryURL) + , m_xFilter(rxFilter) + , m_xDesktop(rxDesktop) + , m_xContext(rxContext) +{ + if (!impl_load()) + impl_dispose(); +} + +WpftLoader::~WpftLoader() +{ + try + { + impl_dispose(); + } + catch (...) + { + } +} + +const css::uno::Reference& WpftLoader::getDocument() const { return m_xDoc; } + +bool WpftLoader::impl_load() +{ + // create an empty frame + m_xDoc.set(m_xDesktop->loadComponentFromURL(m_aFactoryURL, "_blank", 0, + uno::Sequence()), + uno::UNO_SET_THROW); + + // Find the model and frame. We need them later. + m_xFrame.set(m_xDoc, uno::UNO_QUERY); + uno::Reference xModel(m_xDoc, uno::UNO_QUERY); + uno::Reference xController(m_xDoc, uno::UNO_QUERY); + + if (m_xFrame.is()) + { + xController = m_xFrame->getController(); + xModel = xController->getModel(); + } + else if (xModel.is()) + { + xController = xModel->getCurrentController(); + m_xFrame = xController->getFrame(); + } + else if (xController.is()) + { + m_xFrame = xController->getFrame(); + xModel = xController->getModel(); + } + + if (!m_xFrame.is() || !xModel.is()) + throw uno::RuntimeException(); + + // try to import the document (and load it into the prepared frame) + try + { + const uno::Reference xImporter(m_xFilter, uno::UNO_QUERY_THROW); + + xImporter->setTargetDocument(m_xDoc); + + uno::Sequence aDescriptor(3); + auto pDescriptor = aDescriptor.getArray(); + pDescriptor[0].Name = "URL"; + pDescriptor[0].Value <<= m_aURL; + if (m_xInputStream.is()) + { + pDescriptor[1].Name = "InputStream"; + pDescriptor[1].Value <<= m_xInputStream; + } + else + { + ucbhelper::Content aContent(m_aURL, uno::Reference(), + m_xContext); + pDescriptor[1].Name = "InputStream"; + pDescriptor[1].Value <<= aContent.openStream(); + pDescriptor[2].Name = "UCBContent"; + pDescriptor[2].Value <<= aContent.get(); + } + + const uno::Reference xDetector(m_xFilter, + uno::UNO_QUERY_THROW); + + const OUString aTypeName(xDetector->detect(aDescriptor)); + if (aTypeName.isEmpty()) + throw lang::IllegalArgumentException(); + + if (m_xTypeMap.is()) + impl_detectFilterName(aDescriptor, aTypeName); + + xModel->lockControllers(); + const bool bLoaded = m_xFilter->filter(aDescriptor); + xModel->unlockControllers(); + return bLoaded; + } + catch (const uno::Exception&) + { + // ignore + } + + return false; +} + +void WpftLoader::impl_dispose() +{ + // close the opened document + uno::Reference xCloseable(m_xFrame, uno::UNO_QUERY); + if (xCloseable.is()) + xCloseable->close(true); + else if (m_xDoc.is()) + m_xDoc->dispose(); + m_xDoc.clear(); + m_xFrame.clear(); +} + +void WpftLoader::impl_detectFilterName(uno::Sequence& rDescriptor, + const OUString& rTypeName) +{ + bool bHasFilterName + = std::any_of(std::cbegin(rDescriptor), std::cend(rDescriptor), + [](const beans::PropertyValue& rProp) { return "FilterName" == rProp.Name; }); + if (bHasFilterName) + return; + + uno::Sequence aTypes; + if (m_xTypeMap->getByName(rTypeName) >>= aTypes) + { + for (const auto& rType : std::as_const(aTypes)) + { + OUString aFilterName; + if (("PreferredFilter" == rType.Name) && (rType.Value >>= aFilterName)) + { + const sal_Int32 nDescriptorLen = rDescriptor.getLength(); + rDescriptor.realloc(nDescriptorLen + 1); + auto& el = rDescriptor.getArray()[nDescriptorLen]; + el.Name = "FilterName"; + el.Value <<= aFilterName; + return; + } + } + } + + throw container::NoSuchElementException(); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftLoader.hxx b/writerperfect/qa/unit/WpftLoader.hxx new file mode 100644 index 000000000..646e3a3b6 --- /dev/null +++ b/writerperfect/qa/unit/WpftLoader.hxx @@ -0,0 +1,100 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "wpftqahelperdllapi.h" + +#include +#include + +#include + +namespace com +{ +namespace sun +{ +namespace star +{ +namespace beans +{ +struct PropertyValue; +} +namespace container +{ +class XNameAccess; +} +namespace document +{ +class XFilter; +} +namespace frame +{ +class XDesktop2; +class XFrame; +} +namespace io +{ +class XInputStream; +} +namespace lang +{ +class XComponent; +} +namespace uno +{ +class XComponentContext; +} +} +} +} + +namespace writerperfect +{ +namespace test +{ +class WPFTQAHELPER_DLLPUBLIC WpftLoader +{ +public: + WpftLoader(const OUString& rURL, const css::uno::Reference& rxFilter, + const OUString& rFactoryURL, + const css::uno::Reference& rxDesktop, + const css::uno::Reference& rxTypeMap, + const css::uno::Reference& rxContext); + WpftLoader(const css::uno::Reference& rxInputStream, + const css::uno::Reference& rxFilter, + const OUString& rFactoryURL, + const css::uno::Reference& rxDesktop, + const css::uno::Reference& rxContext); + ~WpftLoader(); + + const css::uno::Reference& getDocument() const; + +private: + bool impl_load(); + void impl_dispose(); + + void impl_detectFilterName(css::uno::Sequence& rDescriptor, + const OUString& rTypeName); + +private: + const OUString m_aURL; + const css::uno::Reference m_xInputStream; + const OUString m_aFactoryURL; + const css::uno::Reference m_xFilter; + const css::uno::Reference m_xDesktop; + const css::uno::Reference m_xTypeMap; + const css::uno::Reference m_xContext; + css::uno::Reference m_xDoc; + css::uno::Reference m_xFrame; +}; +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftWriterFilterTest.cxx b/writerperfect/qa/unit/WpftWriterFilterTest.cxx new file mode 100644 index 000000000..78d24dc99 --- /dev/null +++ b/writerperfect/qa/unit/WpftWriterFilterTest.cxx @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WpftFilterTestBase.hxx" + +namespace +{ +class WpftWriterFilterTest : public writerperfect::test::WpftFilterTestBase +{ +public: + WpftWriterFilterTest(); + + void test(); + + CPPUNIT_TEST_SUITE(WpftWriterFilterTest); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +WpftWriterFilterTest::WpftWriterFilterTest() + : writerperfect::test::WpftFilterTestBase("private:factory/swriter") +{ +} + +void WpftWriterFilterTest::test() +{ + const writerperfect::test::WpftOptionalMap_t aEBookOptional{ + { "FictionBook2.fb2.zip", REQUIRE_EBOOK_VERSION(0, 1, 1) }, + }; + const writerperfect::test::WpftOptionalMap_t aEtonyekOptional{ + { "Pages_4.pages", REQUIRE_ETONYEK_VERSION(0, 1, 2) }, + { "Pages_5.pages", REQUIRE_ETONYEK_VERSION(0, 1, 8) }, + }; + const writerperfect::test::WpftOptionalMap_t aMWAWOptional{ + { "JazzLotus.hqx", REQUIRE_MWAW_VERSION(0, 3, 17) }, + { "MaxWrite_1.hqx", REQUIRE_MWAW_VERSION(0, 3, 8) }, + { "MouseWrite_1.hqx", REQUIRE_MWAW_VERSION(0, 3, 8) }, + { "RagTime_2.1.hqx", REQUIRE_MWAW_VERSION(0, 3, 2) }, + { "RagTime_3.2.hqx", REQUIRE_MWAW_VERSION(0, 3, 2) }, + { "RagTime_5.5.rag", REQUIRE_MWAW_VERSION(0, 3, 6) }, + { "ScriptWriter", REQUIRE_MWAW_VERSION(0, 3, 21) }, + { "StudentWritingCenter", REQUIRE_MWAW_VERSION(0, 3, 20) }, + { "WordMaker", REQUIRE_MWAW_VERSION(0, 3, 20) }, + }; + const writerperfect::test::WpftOptionalMap_t aStarOfficeOptional{ + { "Writer_3.1.sdw", REQUIRE_STAROFFICE_VERSION(0, 0, 2) }, + }; + const writerperfect::test::WpftOptionalMap_t aWpsOptional{ + { "PocketWord.psw", REQUIRE_WPS_VERSION(0, 4, 12) }, + { "Word_5.0_DOS.doc", REQUIRE_WPS_VERSION(0, 4, 3) }, + { "Write_3.1.wri", REQUIRE_WPS_VERSION(0, 4, 2) }, + }; + + doTest("com.sun.star.comp.Writer.AbiWordImportFilter", + u"/writerperfect/qa/unit/data/writer/libabw/"); + doTest("org.libreoffice.comp.Writer.EBookImportFilter", + u"/writerperfect/qa/unit/data/writer/libe-book/", aEBookOptional); + doTest("com.sun.star.comp.Writer.MSWorksImportFilter", + u"/writerperfect/qa/unit/data/writer/libwps/", aWpsOptional); + doTest("com.sun.star.comp.Writer.MWAWImportFilter", + u"/writerperfect/qa/unit/data/writer/libmwaw/", aMWAWOptional); + doTest("org.libreoffice.comp.Writer.PagesImportFilter", + u"/writerperfect/qa/unit/data/writer/libetonyek/", aEtonyekOptional); + doTest("org.libreoffice.comp.Writer.StarOfficeWriterImportFilter", + u"/writerperfect/qa/unit/data/writer/libstaroffice/", aStarOfficeOptional); + doTest("com.sun.star.comp.Writer.WordPerfectImportFilter", + u"/writerperfect/qa/unit/data/writer/libwpd/"); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WpftWriterFilterTest); +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/data/calc/libetonyek/fail/.gitignore b/writerperfect/qa/unit/data/calc/libetonyek/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libetonyek/indeterminate/.gitignore b/writerperfect/qa/unit/data/calc/libetonyek/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libetonyek/pass/Numbers_2.numbers b/writerperfect/qa/unit/data/calc/libetonyek/pass/Numbers_2.numbers new file mode 100644 index 000000000..307a49ccf Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libetonyek/pass/Numbers_2.numbers differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/fail/.gitignore b/writerperfect/qa/unit/data/calc/libmwaw/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_1.0.hqx new file mode 100644 index 000000000..1f44c1744 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_1.0.hqx @@ -0,0 +1,61 @@ +(This file must be converted with BinHex 4.0) +:#h0SC@9d,QGh,RBa!&T$38aD48*5!3!!!!Eb!!!&CiqC!3"D3d&-!*!,!3!!!"S +!!J!$!!!'4f9ZCACKD3!@!!!(3fpeFQPPFJ!#!!!!SJ!!!!%!!`!!!!S!N!F0!!! +!!3!$!!%!#J#3"`d!!!!"!!-!!J!+!*!($3!!!!%!!`!%!!S!N!F0!!!!!3!$!!! +!#[rr!!"QCJ!0!!!!!3!$!!!!#QCQrrqCQ3!0!!!!!3!$!!!!#J!!CQErr`!0!!! +!!3!$!!!!%J#3"aF!!!!"!"B!!!!+!*!($!!(!!!!!J!0!!J!!!!#!%X!$!!!!!) +!$3!$!"i!"`#6!*!&)!"C!*!6"!!&!"i!!J!A!#3!!#HB!*!9"3!H!!N!$3!S!!! +RQ!!+!*!6"J!*!!!!!J!Z!!S!!!!B!!!!!J#3&3X!!!!#!!!!$3!!!!J!!3!"!!F +!(!!1!!!!#J%"!3!"N!3!!!!2!!!!$J!%!!3!#J!%!!S!"!!+!"!!!!!5!*!%![! +#3!!a-M!`!*!'%3!!!!)!!!!5!!!!"!!!!!3!%`!!!"S!!3!"!!!!!J!!!-!!!!! +("Qj[FQeKE!#3""-!!!!B!!)!!3!"!!)!!!"C!!!!"`4LEfaN!*!%%`!!!"S!!`! +"!!)!!J!!!&N!!!!("QPdB@aTB`#3""-!!!!F!!3!!3!$!!)!!!"Z!!!!"`PeEQ4 +PFQaTEQ8!!!!6!!!!(J!(!!%!!!!#!!!!@3!!!!F+BQPR)'0[E(9YEJ#3""-!!!! +@!!%!!J!%!!)!!!#%!!!!"`0bC@3!!!!6!!!!'!!#!!)!"3!#!!!!@3!!!!F&Ch* +PC@i!!!!6!!!!'!!$!!)!"J!#!!!!@3!!!!F%BQaeC3#3""-!!!!F!!3!!J!(!!) +!!!"C!!!!"`Na1#"`EfPZG(-!!!!6!!!!'J!&!!)!#!!#!!!!@3!!!!F(3fpeFQP +PFJ!!!"-!!!!B!!%!!`!!!!)!!!"C!!!!"`9KE'PREJ!!!"-!!!!B!!)!!`!!!!) +"!!"C!!!!"`4XC@Cd!*!%%`!!!"S!!`!$!!!!!J)!!&N!!!!("Q0PER4PFJ#3""- +!!!!B!!3!!`!!!!)$!!#B!!!!"`9bD@GSG!!!!"-!!!!D!!8!!`!!!!)%!!#B!!! +!"`CbCA"PBA3!N!36!!!!+!!"!!8!!!!#!!!!ZJ!!!!F8C'PQCQ9bC@jd)'jeE@* +PFQPZCh-!N!36!!!!(!!"!!B!!!!#!!!!*!!!!!8rr-b3#!!!!"-!!!!F!!)!"J! +!!3)!!!#B!!!!"6rmc*!)!!!!%`!!!"`!!`!'!!!#!J!!!*J!!!!&2rc-N!J!!!! +6!!!!(!!%!!B!!!-#!!!!33!!!!8rr-b3#!!!!"-!!!!F!!8!"J!!"!)!!!!#!!! +!"6rmc*!)!!!!%`!!!"`!"J!'!!!&!J!!!!)!!!!&2rc-N!J!!!!6!!!!(!!(!!B +!!!-)!!!!@3!!!!8rr-b3#!!!!"-!!!!Q!!%!"`!!!!)!N!F(%h0[E@8JC'&dC5G +c)'C[FQeKG(-!!!!6!!!!(!!#!!F!!!S#!*!("8!Y!!!!!K+5!*!&%`!!!"`!!`! +(!!!,!J!!!&N!!!!&3#d!!!!#%T)!N!86!!!!(!!%!!F!!!`#!!!!@3!!!!9!,3! +!!!)5NJ#3"4-!!!!F!!8!"`!!$3)!N!F&3#d!!!!#%T)!N!86!!!!(!!'!!F!!!i +#!!!!@3!!!!9!,3!!!!)5NJ#3"4-!!!!Q!!%!#!!!!!)!!!"C!!!!"a0cEfeP)(4 +TE@8RFb"QEh*YBA4c!!!!%`!!!"`!!J!)!!!8!J!!!*J!!!!&2rl-N!J!!!!6!!! +!(!!$!!J!!"8#!!!!Q!!!!!8rrXb3#!!!!"-!!!!5!!3!#!!!&!)!N!F"!!!!%`! +!!#!!!3!*!!!!!J!!!*J!!!!($(0[E@8JCQpbEA9XB3#3""-!!!!S!!)!#3!!!!) +!!!!N!!3#!!%!!!8rri!!N!J#!!-!#3!%!!N!%`!!!#i!!`!*!!!!!J!!!*J!$K$ +rri!!!J!$0!)!!M8!!!8rrm!!N!J"!!3!#3!6!!!!,!!%!!N!!!!#!!!!Q!!2%2r +qJ!!3rrq!!#"!&`%!p!!&3!#J!*!+&%,l!!!"!!!!"18!!!2P!!!!JJ$ll*!'!!$ +lq`#3"I[XN!B!!2X!q`!!!!YcD'9PG#jRGbjf-3)!!J"D3d&-@N9#8J#3#!)!@N0 +"6&T&3P)!N"M2XJ2E!!!'mJ!!"@Ir!!$l!*!)r`$Xr`!!!2X!!-$!`!!!r`$Xrrm +!!!$l!0MB`2m!+rrrr`$r!!!!qpMBf2rr!2rm+`!!r`!!!2[Bf0Mr"Im!TD@P!2m +!!!$l!2rr"38&!*!&r`!!!2X!N![r!!!!rj!0!*!&'J!"!CX#$J!V!!8!+`!&!FB +#%`!V!!8"fJ*k!!!!H!!2!!!!5!")!*!%![!#32rarqi$#3*5B`)&+!2m!3!!!!& +S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3Z +D!!J"!*!0'3%!!!-#!'$rN!LU9DT9UP@U93#3#(rrrrrhrrrrIrrhrhrrprphrrr +rGrrrrhIrhrphrrhrGrrGrhIrhIp9rphr9IrGreArl[p9rl[r9Ip9reAr9IphhAI +GGpehh9@r9Ip9qeAr9EY9re@l9Ip9[eAZ9IY9lP@l9Hj9ZeAZ9EY9kP@l9Dj9ZP@ +V9ET9UeAU9DT9VP@UUK@U9DT4UP@U4DT8UN@U9+T%UK@U4+T4UN5U%DT%UK'U3+S +4UJ5U%DT%UJ#U4+S!UN#U!+S%UJ#))SJLL#+))US!UJ#U!+S!UJ!4!+S!4!#U!#) +!UJ!L!)J!)J#)!#)!L!!J!)J!!J#)!!!!L!!!!)!!#!#!!!J!J!!!!!J!!!#)4#) +4L%3L%4%L4)J4)N5)J%!J%!J%!J%"!J3)%#"!J1"`1"`1"i2"J`F1($K`i-')4#) +!L%3L!"%L4!!4)N3!JN3S%#K%JJ'Cc'BcQFaQ-hHlhHjhZphZlYflGqlGZhGr[pr +[pr[pr[lpqrI[hlpr(ir(ir(iI$limH2(MamqI(HlhIphZphrlYflrqlGZrppZpI +[elYprM0Qc*NcCXbCUT!)c*!)L*!)r`!!!2m!!!#!N!Mr!*!(#)#!#!L!J!KQ!!! +!Q3!!!2q)L)MrL)L)ri#3"rm!r`$r!2m!rrm!!2rr!!"hN!J!rrrr!2rrrhq3#!$ +rN!IhIhrhphprpjRrrrpQrrrr!(GhG`"hGhF!Ij!(m*!%$j!%Q@CQQCPQCTN!#"` +qIciF#!!)&#T9+K3)X6!$'pM!$)f!%!)J!3K!"!J8)N'!!3)%J-!K%J`%!J(rJ)# +!r`J)#!"rIhm!prIhJ%!J!!)%#!##4$P%JJ%"!IKd)NH2&b*a[k#r[Ehp"Ie9S%" +!93S%")K%)K%4)N5)J8)N')&#*"LU!)!!L!#!!!1%5$!-!J%"J)""2JJ)&1-!N!X +S!3'!!!!!"RBa,M!Z-4T6H@eKER4PBb"(FQ9KG&G[FQYc)(Ba,M!Z-3!!!"888hP +YB@jdC@-J4h*PBA4AEh*VFkS!!!%!!!!%j3!!!q8!!!##!&Zcl"Mk!!!!(!##!!4 +A8&01!!!!+P"56P3!!!!f8%&8)`!!!%*fCA*c!!!!6P088L!!!!"D!!(rr`#3"9Z +b#!!"rrm!!!!H!&Za9!!"rrm!!!#D!&Zal!!#rrm!!!1J!&Zb!,rdrrm!!!2-!&Z +aV-@%: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_2.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_2.0.hqx new file mode 100644 index 000000000..bf34a4854 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_2.0.hqx @@ -0,0 +1,125 @@ +(This file must be converted with BinHex 4.0) +:#h0SC@9d,QGh,RBb!&T$38aD48*5!3!!!!R!!!!3ZkT9!J"D3d&-!*!,!3!!!"S +!!J!$!!!'4f9ZCACKG3!@!!!(3fpeFQPPFJ!#!!!"D!!!!!%!!`!!!!S!N!F0!*! +'rj!'!*!0!3!$!!%!#J#3"`d!N!ErN!B!N!PT!!!!!3!$!!)!#J#3"`d!N!ErN!B +!!!(a!3X#2!!1!!!!!3!$!!3!#J#3"`d!N!ErN!B!!$mm!!%[$Nkk!!!!!3!$!!! +!#[rr!!"QCJ!0!*!'rj!'!!!JE[c52bJ!F!!!!!%!!`!!!!TQC[rrQCN!$3#3"[q +3"J!!-"mb(l""EJ3!!!!"!!-!!!!+!!"QC[rr!!d!N!ErN!B!!'i%2S"J!Mk"!!! +!!3!$!!!!%J#3"aF!N!ErN!B!!$eIrrT#CdkY!!!!!3!@!!!!#J#3"``!N!ErN!B +!!%kkrN)YE[rd!!F!!!!#!!d!#!!!!!)!5`!-!!!!!J!0!!-!*!!(!*-!N!8J!&N +!N"N%!!8!*!!#!"F!*!!!*jJ!N"X&!#3!#3!0!#J!!#HB!!S!N"N'!!N!!!!#!#i +!#J!!!"i!!!!#!*!8rqD3!(`"!!!,!!!!!J!!!!d!!!!B!!%!!3!(!"`pI!!&rpC +#C`$S6VVqC"!Z!!i!!!!+!3%"!!%"!'i!!3!2!!!!$J!%!!3!#J!%!!S!"!!+!"! +!!!!+!'ib-$!!N!B4!!!!!J!!!")!!!!%!!!!"!!9!!!!#J!"!!J!#3#3"4B!!!! +`!!m!!!!5!!!!'3!!!")!!2ra!*!'rr%!!!*!!!$rm3#3"[ra!!!#3!!!!"F!!!! +c!*!%!3!"!3!9!!!!$!#3"[rr!!!!!3#3#2ra!*!'rrm!!!*!!*!%'!!!!$-!N!3 +"!!%"!"8!!!!-!*!'rj!',J!!)2rr!!$rm3#3"[rr!!!#3!#3""N!!!!%!!!!&!! +D!!!!!J!"!"X!!!$f!*!%Irprr`#3"(rrIrm&+!2m!%J!5!"M!!%!!!!"!!!!!3! +!6Ud!N!C#Crq3"J"b!*!(N[q3"Qd%!!(rN!J!!`#3#3(rjY"ZrpSr!%kY,J)[$Nk +kr3BJE[qfF!5`D!#+CKK#Cb"ZrlC)D!#-2blrjNkY,Y)[$J!!r1)JE[qfF!1`D!# ++CR)JEJ!"!!%!!3!!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES"VJ%!!"8!!!! +-!*!*!3!!"Pi!!3!5!!!!@J"N!!B"!*!%#3!!!!%!N!8F!!!!(!!!!!3!!!!%!!! +!"!#3"cB!!!#U!!!!!J!6!!!!'J!"!!%!!!!#!!!!`!!!!!F'EQpbE@&X!*!%%`! +!!"J!!J!"!!%!!J!!!&N!!!!("'*[E'3!N!36!!!!'J!$!!%!!J!#!!!!@3!!!!F +'DA4KE'PM!*!%%`!!!"`!"!!"!!-!!J!!!'i!!!!(#A9ZC'9bE'PZC3!!!"-!!!! +H!!F!!3!!!!)!!!"C!!!!"`TLD@FJBfpXG@eZ!*!%%`!!!"B!!3!#!!3!!J!!!)3 +!!!!(!h*PC!!!!"-!!!!B!!)!!J!&!!)!!!"C!!!!"`9RFQ9PEJ!!!"-!!!!B!!- +!!J!'!!)!!!"C!!!!"`4LE(9P!*!%%`!!!"`!"!!#!!F!!J!!!&N!!!!(#6%i)(" +[D@jdF`!!!"-!!!!D!!8!!J!)!!)!!!"C!!!!"`G$Eh9bD@9b!!!!%`!!!"J!!3! +$!!!!!J!!!&N!!!!("@&XD@GZ!!!!%`!!!"J!!J!$!!!!!J%!!&N!!!!("'aPCR3 +!N!36!!!!'J!$!!-!!!!#!J!!@3!!!!F'Bf9ZG'9b!*!%%`!!!"J!"!!$!!!!!J- +!!*J!!!!("A*TCfKd!!!!%`!!!"S!"3!$!!!!!J3!!*J!!!!("R*PF'9KG!#3""- +!!!!S!!%!"3!!!!)!!!#k!!!!"a4ND@CQCA*PER3JER9YBQ9bD@jRF`#3""-!!!! +F!!%!"J!!!!)!!!!N!!!!"6rmc*!)!!!!%`!!!"`!!J!'!!!"!J!!!*J!!!!&2rc +-N!J!!!!6!!!!(!!$!!B!!!)#!!!!Q!!!!!8rr-b3#!!!!"-!!!!F!!3!"J!!!`) +!!!""!!!!"6rmc*!)!!!!%`!!!"`!"3!'!!!%!J!!!!)!!!!&2rc-N!J!!!!6!!! +!(!!'!!B!!!8#!!!!!J!!!!8rr-b3#!!!!"-!!!!F!!F!"J!!!`J!!!"C!!!!"6r +mc*!)!!!!%`!!!#B!!3!(!!!!!J#3"`F6FfpYC5"NBA4P*h-JCQpbE@&dF`!!!"- +!!!!F!!)!"`!!#J)!N!F&3#d!!!!#%T)!N!86!!!!(!!$!!F!!!X#!!!!@3!!!!9 +!,3!!!!)5NJ#3"4-!!!!F!!3!"`!!$!)!!!"C!!!!"8!Y!!!!!K+5!*!&%`!!!"` +!"3!(!!!0!J#3"`9!,3!!!!)5NJ#3"4-!!!!F!!B!"`!!$J)!!!"C!!!!"8!Y!!! +!!K+5!*!&%`!!!#B!!3!)!!!!!J!!!&N!!!!(%h0[E@8JG'PYC5Gc)'C[FQeKG(- +!!!!6!!!!(!!#!!J!!"3#!!!!Q!!!!!8rrXb3#!!!!"-!!!!F!!-!#!!!&3)!!!# +B!!!!"6rqc*!)!!!!%`!!!")!"!!)!!!8!J#3"`%!!!!6!!!!)!!"!!N!!!!#!!! +!Q!!!!!F-FfpYC5"QEh*YG@aK!*!%%`!!!#J!!J!*!!!!!J!!!#3!"!)!!3!!"6r +rJ!#3#!)!!`!*!!3!#3!6!!!!,J!$!!N!!!!#!!!!Q!!1%2rrJ!!#!!-d!J!#03! +!"6rr`!#3#!%!"!!*!"-!!!!X!!3!#3!!!!)!!!#B!!m3rrk!!"$rri!!)%!A!3$ +d!!9!!+!!N!S8c!8!!!%!!!!2e3!!$Y8!!!$Q!!!2c-m!!!r`!!$mr3!!$mm!!2r +3!!!2rr!!m!!!!!`,FfKPCA3ZChFZGM)#!!!!@N0"6&T&3P)!N!TD3d&-@N9#8J# +3'-qb#NS!!!R!!!!3Zrrrrr!!!!$r!*!1rc(rN!J!N!Ar-6%arr@3"Irr!*!&rc( +rqI@3"Irhr`#3"2rrqI@3"[q3"!!!!2rep3$eN!AhprRr!!!!rrArN!Rjr`!!!2r +erm,m`[c#r-,mq3!!!"S!!3'E!Ji!+`!&!#X!"3('!K-!+`!&!GS#HJ!!!(J!$`! +!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!! +"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!!!$!J"Jrj! +)UP@U9DT9UP8!N!KrrrrrprrrrhrrprprrrIrGrrrrhIrrrphrprrGrrprhIrhIp +hrphr9IrGreArhIp9rqlr9IqlreAr9Ip9reArGpehhAIGGpe9[eAr9IY9re@l9Ip +9ZeAr9Ep9lPAl9Hj9ZeAZ9EY9lP@l9HT9Ze@Z9ET9Ue@k9DY9kP@U9Dj9UUS9UP@ +U8DT9UN@U9+T&UP5U4+S9UN5U8DT%UK'U4+S4UN#U%DS%UK'U4+S!UN5U!+T!UJ# +U"+S!L#+))SJLL#+U!+S!UJ#U!+S!%3#U!%3!UJ!L!+S!)J#)!#)!L!!L!)J!)!# +)!!)!L!!!!)J!!!#!!!J!J!!)!)!!!!!)!!!!L%3L%BK%)K%4)N5)%5*%L)"!)"! +)"!)"!3)%#"!J3)$JF$JF$JH$`B-($K`iF1$"L%3L!)K%)J!4)N3!%5*%!)*%+"! +S4))"QFaQ-jR-CM0hZphZGl[GlZlGZhIZhEYhIlrIlrIlrIlqrI[hlpqrIaq2aq2 +aq(`qq2(MaimI2RahZphrGl[GrqlGZrrZhE[rIE[AlpHlIIicCXbC-fE-QDU3#-b +3#)L3#2m!!!$r!!!!J*!)r`#3"`L!J!J)J)!)CJ!!!*N!!!$rL)L)riL)L2q!N!I +r!2m!r`$r!2rr!!$rr`!!Gj!)!2rrr`$rrrprN!J!rj!(phprprGrIrHCrrrrC[r +rr`"hGhF!GhGh!(q3"r#3"!q3"*PQCTQCCQDC!!JF2Rmq(!J!#"3U95S8#,%`!a[ +B`!b0J"!#)!%)3!3)&#*"J!%#")$!)4)-"!)"ri#!J2m)#!J!Ihpr!2Ihpi"!)!! +#"!J!JN3j4))"!3(iG#*(MaFLFEqJ[lfpr3Ap9D"!3&8+"!5)4#)4%5*%L)&#*"L +"3L3BUJ#!!)J!J!!$K%J`$!)"!B#!36i)#"6M!*!+"Q3!!J!)rj!'r2ccm`8&rrp +NC!)#hGd)#!B'm[))#)5%4NB!!+@P!*!%e03#!UZVkZSI(lHh&"3!!'4N%4&@9L` +X"3@3!*!!FA%k1X#3"S#3"N#3"J#3"[q3#Xc-rj!%QCRrN!4QC[q3"$-crj!%!!$ +rrmc-rj!%c*!%rrr-c*QCrrr-c'CQrrr-c$-crrr-c!!!rrqCQIq3"*QCc-crrjQ +3"2rrQCPQC[rrQCNc-rrrQCN!!2rrCQErN!4QCXc-rrpQCTQCrrpQN!6rrfCQ-c2 +rrfCQ!!$rrc-crj!%-c2-c2rr-c1CQIrr-c0QC[rr-j!%rrmc-`!!rrm!!2q3"!! +!c-crr`!!QCRrr`!!CQErr`!!-c2rr`#3"-c-rj!%c-crrmb3"2rrQCR-c2rrCQE +-c2rr-c2-c2rr!!$-N!6rrmb3#TQCc*!%CQE-N!3c-mb3"!!!c-bCQIrrc-bCQFb +3"*Q3"-c-QCPQCXc-QCNc-mc-QCN!!-c-CQErrmc-CQE-N!4QCTQCc-aQN!6-c'C +Q-c2-c'CQ!!$-c$-crrr-c$-cc*!%-c1CQFc--c0QCXc--j!%c-`c-`!!c-`!!2r +rc-`!!-b3"!!!QCR-c!!!CQE-c!!!-c2-c!#3"*QCrj!%QCRrrmc-QCRrrjQ3"2r +rCQDCQIrr-c1CQIrr!!#CQFc-rrqCQFb3"*QCc-bCN!6-c'CQQCR-c$-cQCR-c!! +!QC!%rrqCN!6-c*Q3#QCQQC!%-c1CN!3!!*QCCQErrjQCCQE-c*QCCQDCN!4QN!5 +CQ@CQ-c1CQ@CQ!!#CQ6-crrqCQ6-cc-bCQ6-cQC!%-c0QCTQC-j!%QCNc-`!!QCN +!!2rrQCN!!-c-QCN!!*Q3"!!!CQDCQ3!!-c1CQ3#3"'CQrj!%CQErrmc-CQErrjQ +CCQErrfD3"2rr-c0QC[rr!!"QCXc-rrpQCXb3"'CQc-bCQ@CQc-aQN!6-c$-cCQE +-c!!!CQDCQIrrCQDCQFc-CQDCN!4QCTQCCT!%QCNc-fCQQCN!!'D3"2rrCT!%c-a +QN!5CQ@D3#M-cCT!%!!"QCM-crrpQCM-cc-aQCM-cQCPQCM-cCT!%-j!%CQBc-`! +!CQB!!2rrCQB!!-c-CQB!!*QCCQB!!'D3"!!!-c0QCJ#3"$-crj!%-c2rrmc--c2 +rrjQC-c2rrfCQ-c2rrc13"2rr!!!c-mc-rrmc-mb3"$-cc-bCQ6-cc-aQCM-cc-` +cN!6-c!!!-c1CQIrr-c1CQFc--c1CN!3c-jQCCQBc-jQC-j!%QCN!!$-cCQErrc- +cCQE-c$-cCQDCQ6-cCT!%-c0QCM13"'CQ!!!cN!6rrc13"-c--j!%QCNcN!4QCM1 +3#J!!-c-!!2rr-c-!!-c--c-!!*QC-c-!!'CQ-c-!!$13"!#3"[q3"!!!rrr-c!! +!rrqCQ3!!rrpQCJ!!rrmc-`!!rrm!N!6-c2rr!!$-N!3!!-c-QCN!!-c-CQB!!-c +--c-!!-c-!*!%QCRrr`!!QCR-c!!!QC!%!!#CQ@CQ!!#CQ6-c!!#CQ3#3"'CQrrm +!!'CQc-`!!'CQQCN!!'D3"!!!CQBc-`!!CQB!N!3c-rrr!!!c-mc-!!!c-jQC!!! +c-fCQ!!!cN!3!!$-c!*!'rrm!N!6-c!#3"*QC!*!%CQB!N!3c-qlZ!*!%hGd!N!5 +lZ`#3"+UU!*!%L)J!N!4hG`#3"&99!*!%4%3!N!3L)J#3""%4!*!'lZi!N!6Gh3# +3",Zl!*!%UUS!N!5)L!#3"(Gh!*!%998!N!4%4!#3"#)L!*!%%4%!N!EZlJ#3"0h +G!*!%ZlX!N!5UUJ#3")L)!*!%GhF!N!4993#3"%4%!*!%)L)!N!34%Hk3"Yf3"VZ +3"UU3"SL3"RH3"P@3"N53"L+3"K'3"J#3#33!N!B"!!!"rj!'!*!*!Iq3"J#3"bd +!!Iq3"J#3"eS!!Iq3"J#3"iF!!Iq3"J#3"l3!!Iq3"J#3"q%!!Iq3"J#3"J%1!!( +rN!B!N!B"1`!$rj!'!*!*!`#3"[q3"J!!!!,rN!B!N!N#rj!'!*!(Y!!"lZi!N!5 +)L!#3"`%!!1lZ!*!%998!N!8"!*!%rrm!N!5)L!!!!!(rN!6-c2q3"!#3"J(d!!) +!#3!!!!5!!*!K"U3!!1!9rrm!!J!*!!!!#3!!rrm!!ZXq!*!%i"Irr`!#lF)!N!6 +J'2rr!!,Z63#3"FArr`!#!!3!5!!!!!5!!!!*!!!!")!!!'Arr`!#9#X!N!9Qrrm +!!P4c!*!&D2rr!!*9,3!#!!5!!!!%J!"9T`#3"Arrr`!#9E%!N!9prrr%!P@j!!# +2j!!!rrr!!PBB!!!!"J")!!!!")!!!!N!!!!%J!!!#3!!!!5!!!$(rrm!!QrR!*! +&DIrr!!,`JJ#3"3)!%J!!!!5!!*!%Drrr!!,`p!#3"@hrr`!#mCS!N!6J!2rr!!* +6E!#3"3%!"J!5!!!!")!!!!%!!!!%J!!!!3!!!!5!!!!#8kF!N!6`!2rr!!-*-J# +3"2!"rrm!"!!*!!!!")!!!!%!!!!%J!!!!2!&rrm!!`PM!*!%i"rrrb!$#Ad!N!6 +J"[rr)!-!"J!*!!!!")!!!!N!!!!%J!!!!3!!!!5!!*!&i#,rr`!$#Td!N!6J"2r +r!!-+V3!#!!%!!!!%J!!+``#3"1!$rrm!!`V6!*!%m!Err`!$#bF!N!6`"rrr!!- +,T!#3"!'!!!%!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!Di!!J!!!!X!"3! +12rf[S09lY$AK4d!#lGYUjadKGES"0!!'!!!!#`!&!!irrDqJeAZd0H&(3!,YffV +R(5&eZJ(Z!!8!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!3)!"!!!!!X!"3! +12rf[S09lY$AK4d!#lGYUjadKGES"!!!"!!!!#`!&!!irrDqJeAZd0H&(3!,YffV +R(5&eZJ$Z!!)!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!2`!"J!!!!X!"3! +12rf[S09lY$AK4d!#lGYUjadKGES!,J!&!!!!#`!&!!irrDqJeAZd0H&(3!,YffV +R(5&eZJ$b!!3!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!&B!!`!!!!X!"3! +12rf[S09lY$AK4d!#lGYUjadKGES!#!!$!!!!#`!%!"%rr1bM##J4R&NN3!1,YXK +)Bme$j3"@!!!!+!)!J!!!!`Cf-Li`,M%D8hPYB@jdC@-J4h*PBA4AEh*VFb"f-Li +`,M%!!!!9&&0jE@&ZG'9M)%GbC@&d9fpbDh1U!!!"!!!!$p8!!!l9!!!!jJ"HC1` +BqJ!!!"`!jJ!*9e"66J!!!&*38Nj8!!!!AP""9#-!!!"U8'a89!!!!(C1H%9N!!! +!JNGb4&-!!!#14'&)8`!!!*T"8P*c!!!!TRCPFR-!!!#b8e45)!!!!,i!!Irr!*! +&AQ+i!!(rr`!!!"i!AQ+m!!(rr`!!!*S!AQ*!!!(rr`!!!k!!AQ)m!!(rr`!!#JJ +!AQ+S!!(rr`!!#K!!AQ+N!!(rr`!!#a3!AQ+J!!(rr`!!$3`!AQ+8!!,rr`!!$T! +!!&jLQ,rdrrm!!!km!&jLN!"hAJ: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_1.0.hqx new file mode 100644 index 000000000..872304de2 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_1.0.hqx @@ -0,0 +1,115 @@ +(This file must be converted with BinHex 4.0) +:#'4KG'%ZChFa!&T%3P0D48*5!3!!!#+J!!!&CiPR!3"D4%*6!*!-)!!!!#!!!!! +J!*!,"J!!!!B!!!!'!*!,#J!!!!S!!!!+!*!,$!!!!!`!N!3)!!!!#!!!!!J!N!F +)!!!!"`!!!!J!!!!)!!)!!J!!!S!!!!1!!!!$S!!!!m!!!!2J!!!%!!!!"#!!N!B +&`2q38(9bH5"6BfKXBQX)6Q9h)&P[FQX36faN)%9ZCfaTFfJJ9'9iG"02E'3J4@j +RE'PcD#"8CAKd)%e8"%pZHAJ'6hKQEh*N#&"KE'&dD@j[$P0MFQP`G#"09#"#Efa +N"90hD@jR"P0jE@*[E!K8C@aPG'9iG!98D@ePF`G89&P'Efjd$9TKF'BJ3fKKEQ0 +PFRN0@Q&`CL"%D@jRBQ&dF`4DC@&X"9C8-6!`!!!!#!!E!!J!@Yi)!!!!'`8j)(" +dF`)a-!)a-J)a0!)a1!)b0!)c0J)d1!!!!3!!!!Qq!!!)[J!!!Ui!9S+-'2S!!!! +F!Ui!'d4TEQB!!!$L8e4C53!!!1j69&)M!!)!qP934%`!!`%H4&"$E`!+!!!!&!! +!#!!!!!J!!!!)!*!*!CC%8%CK!!S!!!!8!!!D!!!!'J!!!"S!N!N"aP"cCA3!#J! +!!"3!!"`!!!!F!!!!(!#3#3(f8(*Q-3!+!!!!&!!!(J!!!"i!!!!H!*!*!LC3FQB +e!!%!!!$d!!3!2!!(!!%"!3!!!#!!N!i#!!!""(4PH(30mF3!D,mL!'Lr*!!BhBi +!!2q3"!!"!*!&"3!"!3%!!!!J!*!1!L!!!JCZG@eLCA,%!'Lr)J"S[b3!'0f1!!$ +rN!3!!3#3"3N!!3%"!!!!)!#3$J*!!!-%C'&dC3haa!"S[b)!D,mN!"MGMJ!!rj! +%!!%!N!8+!!%"!3!!!#!!N!i#B!!%"(4TE@80mF3!D,mL!'Lr*!!BhBi!!2q3"!! +"!*!(!rrr!!)!!!!-!!)!"!!!$J!!!",JhP!"!2rr!!!$J!"DhN`!!`!!!!3!!!! +mhNJ"!2rr!!!%+J"DhN3"!2rr!!!%AJ!%!!!!"!!!!4)%rJ"DhM`"!2rr!!!&2J" +DhMJ"!2rr!!8!!!!%!!!!![rr!!!&MJ"DhM!"!2rr!!!&Q!"DhL`!"J!!!!3!!!! +#hLJ"!2rr!!!&TJ"DhL3"!2rr!!!&X!!(!*!%rrm!!!C'!&VH(!%!rrm!!!Cb!&V +H'!)!rrm!r`!!!#3%G'pdE`"!!-!!N!G!,3!!!!%G@J!!`#d!!!!916[!!0i)"J# +3&2m!!!!N"(4TG'N!3!'J!*!(3#d!!!!#%S3!!-!Y!!!!&6NlP98!N!S"6b8"EA" +N)8&38%`!r`!!!%SU+'0[ER4KD@jc)$3JCQPPE'4c1L"dCAKd,fjeE@*PFLpNBA4 +P,h4TE@8Trhrr3$)!N!Crrd!b!*!'Irp!-J#3"R"bC@B%!*!-r`!!!&Jj+#"TEL" +QD@9XC#!a1L"dEh4[,(4eG(8XG'PdD5XJG'KPFf8JCQPfC5"MEfeYC@jdFbFJE'P +ZCA-TIrp!-J#3"Rrr3$)!N!Crrd!b!*!*r`!!!$)6+'PZ)'CTC@aN)$)k)$-X0#` +e+Arr3$)!N!Crrd!b!*!'Irp!-J#3"R"bC@B%!*!%$!!!!!B!!!%"!'F!N!r[!*! +%J!#3""S!!!(F!E)"L!&H!63"#J$J!,B!M!"L!$J!$N&r!!J!N!`%3!!!!!%!!"I +!!!!!!J!!")!!!!!$!!!%`!!!!!3!!!8J!!!!"3!!"B!!!!!'!!!B!*!%"`!!''! +!!!!)!*$r!*#c3Am!#!$#!*!)+#"TEL"QD@9XC#!a1L"dEh4[,(4eG(8XG'PdD5X +JG'KPFf8JCQPfC5"MEfeYC@jdFbFJE'PZCA-T+'0[ER4KD@jc)$3JCQPPE'4c1L" +dCAKd,fjeE@*PFLpNBA4P,h4TE@8T+'PZ)'CTC@aN)$)k)$-X0#`e+5KTEL"QD@9 +XC#!c1L!a,c%[0#`a,c-a,c3X-6)[-5mi15NSD@iJCQPPE'3J0$SJ-cS`-#`J0$S +`-#`J06S`-#PdDA4TG'pdEh4eG(8!1@0fQ,Dk[J!!!!8!!!!%!!!!"J!!!!F!!!! +)!!!!!`!!!!%!!!!#!*#Y""kS!*"B3Am!#!#3%3%!N!F#!*!(!`#3"`3!N!F&!*! +("J#3"`F!N!F)!*$r!*#c4!!!#!#3#`%!!!!#!!!!!`!!!!3!!!!&!!!!"J!!!!F +!!!!)!*$r!*$@#3!!"-`!@l%B!!%+4'&dB5"&ER4bHDd!!rc8!!`jI!!*!(JjI!! +"!(TJ'!!"!!8!!3!"!!3!N"!#*`!!!)S!!!!+!!!!#J!!!!S!!!!I!!!!(J!!!"m +!!!!H!!!!!3%!N!N&+!2m!%J!5!!$!!%!!!"EXC3!#!#3"!%!!!-!!!")!%J!N!3 +#fJ)Srq(riJ,j!NB$4`8S!r`!!J!!!%J!5!#3"!,D!LJ!!3!!!'3!!!!"!!%"!3! +!!!%R$`!"!!%!N!d#!"N"N!!!N!9!!*!F!E3!!!#J!!!!"!!!!"3!#!!f!3!!&J! +!!#d!!!!N!!!!4!!!!!%!!!!"!!!!0`#3"!%!N"8+!!!8!!!!53!!!#8!!!%4!!! +!!J!!!!)!!!!F!*!%!3#3&3%!!$%!!!!8!!!!2`!!!%3!!!!"!!!!!`!!!$N!N!3 +"!*!9#J!!,`!!!%N!!!"!!!!"%3!!!!)!!!!%!!!!(!#3"!%!N"8"!!"-!!!!+!! +!!&S!!!"%!!!!!3!!!!8!!!!h!*!%!3#3&3S!!%S!!!"*!!!!@`!!!4%!!!!#!!! +!"J!!!"`!N!3"!*!9!3!!C`!!!#N!!!"e!!!!4!!!!!%!!!!(!!!!0`#3"!%!N"8 ++!!"P!!!!53!!!(B!!!%4!!!!!J!!!!J!!!!F!*!%!3#3&J-!0!!%!!%!!!!"!*! +Drj!'!*!'rj!'!!3!!3!!!!%!!!!"rj!)!*!1rj!'!*!'rj!'!!!!!3!!!!%!!!% +"rj!)!*!1rj!'!*!'rj!'!!!!(J!)!!)!!3!#!!-!"!!&!!B!"`!)!!3!"!!!!!% +!N!89!!!!$!#3#"3#!*!'!J%!&3!"!!`!N!ErN!S!!!!#!'F!!!!T!!!!G3!!!%3 +!!!4dD@eP!!-!!`!!!!%!N!89!!!!$!#3#!S#!*!'!J%!&3!"!!`!N!ErN!S!!!! +#!%`!!!!S!!!!@J!!!%3!!!4NBA4P!!)!!J!!!!%!N!89!!!!$!#3"`)!!J#3"J) +"!"8!!3!-!*!'rj!+!!!!!J!a!!!!&!!!!$m!!!"%!!!'ER9YBQ9b!!%!!3!!!!% +!N!89!!!!$!#3#3)!N!B#!3!9!!%!$!#3"[q3#J!!!!)!&J!!!#d!!!!N!!!!4!! +!"(4PH(3`$)#L-&J!Sc#N!+3`m!!*!!!%c!"EX5!!!`K$EfaeE@jKFJ#3"i!!!!` +!!ST!!!!!!S8!!'`!!3!K!!%!!J!$!*!3!LF!!!!9!!!!&!!!!!S!!!!+!!!!(`! +!!"i!!!!I!!!!(J!!!!%"!3#3#!8S!r`!5!")!!-!!3!!!&ZaM!!)!*!%!3!!!`! +!!%J!5!#3"!,D!LMriIrL![N#4J0("5J$r!!#!!!!5!")!*!%!YS#+!!"!!!!C!! +!!!%!!3%"!!!!!5F2!!%!!3#3$3)!'3'3!!#3"8!!N"`"Y!!!!+!!!!!%!!!!&!! +)!$B"!!!%!!!!!3!!!")!!!!B!!!!!3!!!!%!!!!h!*!%!3#3&3S!!"8!!!!"!!! +!*J!!!)F!!!!#!!!!!J!!!"`!N!3"!*!9!3!!"!!!!)S!!!!5!!!!ZJ!!!!%!!!! +$!!!!13#3"!%!N"8+!!!9!!!!LJ!!!#B!!!%3!!!!!J!!!!3!!!!F!*!%!3#3&3% +!!!3!!!%6!!!!%J!!!5m!!!!"!!!!"3!!!$F!N!3"!*!9#J!!&3!!!4-!!!!Q!!! +"Q3!!!!)!!!!'!!!!(!#3"!%!N"8"!!!%!!!"R!!!!")!!!'h!!!!!3!!!!F!!!! +h!*!%!3#3&3S!!"8!!!'F!!!!*J!!!L)!!!!#!!!!#!!!!"`!N!3"!*!@!`!d!!3 +!!3!!!!%!N"VrN!B!N!ErN!B!"!!"!!!!!3!!!!(rN!J!N!lrN!B!N!ErN!B!!!! +"!!!!!3!!!3(rN!J!N!lrN!B!N!ErN!B!!!!H!!J!!J!"!!)!!`!%!!8!"J!(!!J +!"!!%!!!!!3#3"48!!!!-!*!)&!)!N!B#!3!9!!%!$!#3"[rr!*!'rj!%!!!!"!! +!!C`!!!!5!!!"Y`!!"(4TE@8!!`!$!!!!!3#3"48!!!!-!*!)#J)!N!B#!3!9!!% +!$!#3"[rr!*!'rj!%!!!!"!!!!4-!!!!5!!!",`!!"'4KG'8!!J!#!!!!!3#3"48 +!!!!-!*!(!J!#!*!'!J%!&3!"!!`!N!Err`#3"[q3"!!!!!3!!!#+!!!!%J!!!,S +!!!CZG@eLCA)!!3!"!!!!!3#3"48!!!!-!*!*!J#3"J)"!"8!!3!-!*!'rrm!N!E +rN!3!!!!%!!!!!3!!!")!!!!B!!!%G'9iG!#3$rm!!!!N"(4eG(8!3!'!!*!(3#d +!!!!"(CB!!-!Y!!!!&6NlUUYPFJ#3&Im!!!"#)LKTEL"QD@9XC#!c1L!a,c%[0#` +a,c-a,c3X-6)[-5mi15N!Irp!-J#3"Rrr3$)!N!Crrd!b!*!Ir`!!!$iH+'PZ)'C +TC@aN)$3k)$-k-$!X)$3k-$!X)$8k-$!T!(rr3$)!N!Crrd!b!*!'Irp!-J#3)`J +!!!#-!*!&+3)S!*!&+3)S"5J$r!")!%J!!`!"!!!!!3!"!!%!!`#3"[q3"J#3"[q +3"J!9!!!!$!#3#3%!!!B'!!%!!3!!!!`!"3!22rfN[(dC02F**%!#r2Yb6)H41E3 +!!3!5!!!!@J!J!!B"!*!%#3!!!!%!N"-)!!!!M!#3"5N#+!#3"5N#+!8S!r`!5!" +)!!-!!3!!!!%!!3!"!!-!N!ErN!B!N!ErN!B!&3!!!!`!N!N"!!!'"J!"!!%!!!! +-!!8!$crpT,ap'66h#54!![clFNb(N6Qd!!%!%J!!!&S!)!!'!3#3"!N!!!!"!*! +53Am!#!#3$3Grrd!b!*!*#(rr3$)!N!N'Irp!-J#3#39rrd!b!*!*"(rr3$)!N!N +"3!$!!*!+!N!"J!#3#J0!!D!!N2m!N)T"I`!)!*!0#(rr3$)!N!N(Irp!-J#3#3C +rrd!b!*!*"Arr3$)!N!N%Irp!-J#3#3&!,3!!!!%G@J#3"3*!,3!!!!%GPJ#3"30 +!,3!!!!)5K!#3r`#3K8&r!!J!N!d)Irp!-J#3#3Grrd!b!*!*"Rrr3$)!N!N&Irp +!-J#3#34rrd!b!*!*!F!Y!!!!&6Nl`!#3"!,!,3!!!"8j1kUV!!!!!m!Y!!!!&6N +lP98!N2m!N)0"I`!"!*!-"H"!!!!J!*$r!*$X#!!!!)`!N!8T!LJ!N!8T!LJ&+!2 +m!%J!5!!$!!%!!!!"!!%!!3!$!*!'rj!'!*!'rj!'!"8!!!!-!*!*!3!!"J!!!3! +"!!!!$!!&!!mrrD5mI4Ndp`NN3!,mqh*-Kj%jY!!"!")!!!"D!&X!"J%!!$B!#3! +!!!%!N!B"%!!!!38!!!%-!!#UG`!!!3!!!!6P!!!$j3!!!)*38dNb39G%3J%!N!B +#48!"!!X"8&0*-N&A4%-"!!KNBA4K,QGh-3!#!!!!@N4#8eT&3P)!N!aD4%*6@N9 +#8J#3'-qcH(X!!#+J!!!&Ce"656*"9e"'!3#3"J*23!%!#`&38dNb39G68`%!N!B +#4N!"!!X"8&0*-N&A9e!"!*!'!N4!!3!,!9"656*%D@0d!3#3"J*33!%!#`&38dN +b8e4%3J%!N!B#6%!"!!X"8&0*-P084%-"!*!'!Nj!!3#3""S!!3'[!M`!+!!b!#X +!"3(D!N%!+`!&!GS#HJ!!!(J!!`!!!%J!5!#3"!,D!LMriIrL![N#4J0("5J$r!! +#!!!!5!")!*!%!YS#+!!"!!!!C!!!!!%!!3%"!!!!!5F2!!%!!3#3$3)!'3'3!!# +3"8!!N"`$!J"Jrj!)UP@U9DT9UP8!N!KrrrrrprrrrhrrprprrrIrGrrrrhIrrrp +hrprrGrrprhIrhIphrphr9IrGreArhIp9rqlr9IqlreAr9Ip9reArGpehhAIGGpe +9[eAr9IY9re@l9Ip9ZeAr9Ep9lPAl9Hj9ZeAZ9EY9lP@l9HT9Ze@Z9ET9Ue@k9DY +9kP@U9Dj9UUS9UP@U8DT9UN@U9+T&UP5U4+S9UN5U8DT%UK'U4+S4UN#U%DS%UK' +U4+S!UN5U!+T!UJ#U"+S!L#+))SJLL#+U!+S!UJ#U!+S!%3#U!%3!UJ!L!+S!)J# +)!#)!L!!L!)J!)!#)!!)!L!!!!)J!!!#!!!J!J!!)!)!!!!!)!!!!L%3L%BK%)K% +4)N5)%5*%L)"!)"!)"!)"!3)%#"!J3)$JF$JF$JH$`B-($K`iF1$"L%3L!)K%)J! +4)N3!%5*%!)*%+"!S4))"QFaQ-jR-CM0hZphZGl[GlZlGZhIZhEYhIlrIlrIlrIl +qrI[hlpqrIaq2aq2aq(`qq2(MaimI2RahZphrGl[GrqlGZrrZhE[rIE[AlpHlIIi +cCXbC-fE-QDU3#-b3#)L3#2m!!!$r!!!!J*!)r`#3"`L!J!J)J)!)CJ!!!*N!!!$ +rL)L)riL)L2q!N!Ir!2m!r`$r!2rr!!$rr`!!Gj!)!2rrr`$rrrprN!J!rj!(php +rprGrIrHCrrrrC[rrr`"hGhF!GhGh!(q3"r#3"!q3"*PQCTQCCQDC!!JF2Rmq(!J +!#"3U95S8#,%`!a[B`!b0J"!#)!%)3!3)&#*"J!%#")$!)4)-"!)"ri#!J2m)#!J +!Ihpr!2Ihpi"!)!!#"!J!JN3j4))"!3(iG#*(MaFLFEqJ[lfpr3Ap9D"!3&8+"!5 +)4#)4%5*%L)&#*"L"3L3BUJ#!!)J!J!!$K%J`$!)"!B#!36i)#"6M!*!,+!%"J!! +!!!Cf-5i`,M%D8hPYB@jdC@-J4h*PBA4AEh*VFb"f-5i`,M%!!!!9&&0jE@&ZG'9 +M)%GbC@&d9fpbDh1U!!!"!!!!"18!!!2P!!!!JJ"EY%3C@!!!!"`!JJ!%9e"66J! +!!#T38Nj8!!!!0P""9#-!!!"#GQ9bF`!!!%j69&)J!!!!@J!"rrm!N!9EXIJ!!Ir +r!!!!(J"EXI3!!Irr!!!!QJ"EXI`!![rr!!!$S!"EXLLrp2rr!!!$c!"EXHccC`: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_2.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_2.0.hqx new file mode 100644 index 000000000..19caf5ef8 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/indeterminate/GreatWorks_DB_2.0.hqx @@ -0,0 +1,222 @@ +(This file must be converted with BinHex 4.0) +:#'4KG'%ZChFb!&T%3P0D48*5!3!!!#`!!!!3ZiX#!J"D4%*6!*!-+J!!!#S!!!! +U!*!,"J!!!!B!!!!'!*!,#J!!!!S!!!!+!*!,$!!!!!`!N!3)!!!!#!!!!!J!N!F +)!!!!#!!!!!J!!!!)!!)!!J!!)U!!!!1!!!!$S!!!!m!!!!2J!!!%!!!!"#!!N!B +&`!)!!!!M`!!!"H!!!2q34(9bH5"6BfKXBQX)6Q9h)&P[FQX36faN)%9ZCfaTFfJ +J9'9iG"02E'3J4@jRE'PcD#"8CAKd)%e8"%pZHAJ'6hKQEh*N#&"KE'&dD@j[$P0 +MFQP`G#"09#"#EfaN"90hD@jR"P0jE@*[E!K8C@aPG'9iG!98D@ePF`G89&P'Efj +d$9TKF'BJ3fKKEQ0PFRN0@Q&`CL"%D@jRBQ&dF`4DC@&X"9C8-6!`!!!!#!!E!!J +!@Yi)!!!!'`8j)("dF`)a-!)a-J)a0!)a1!)b0!)c0J)d1!!!!3!!!!Qq!!!)[J! +!!Ui!9S+-'2S!!!!F!Ui!'d4TEQB!!!$L8e4C53!!!1j69&)M!!)!qP934%`!!`% +H4&"$E`!+!!!!&!!!#!!!!!J!!!!)!*!*!CC%8%CK!!S!!!!8!!!D!!!!'J!!!"S +!N!N"aP"cCA3!#J!!!"3!!"`!!!!F!!!!(!#3#3(f8(*Q-3!+!!!!&!!!(J!!!"i +!!!!H!*!*!LC3FQBe!!J!!!$f!*!&+3)S!*!&+3)S"5J$r!")!%J!!`!"!!!!!3! +!!!%!!$)X!*!'`F(rN!CJ"J#3"NcIrj!'9%m!!Iq3#!!$!*!*!3%P5J"R!!%b%L` +"Z'B+JL`"ZF!"C`!")N(ZrmT$l!$m)0NJf8KZrmT)E[rF6Ud@JNKZ!!")E[r+,c` +!!3!"6VVqE%kY!!%!!3!"!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ'Z!!! +!&3!!!!`!N!N"!!!'5!!"!")!!!"D!!!!"J%!!*!!!!N!!!!"!*!&!rrr!!)!!!! +-!!)!"!!!$J!!!",JhP!"!2rr!!!$J!"DhN`!!`!!!!3!!!!qhNJ"!2rr!!!%+J" +DhN3"!2rr!!!%AJ!%!!!!"!!!!4)%rJ"DhM`"!2rr!!!&2J"DhMJ"!2rr!!8!!!! +%!!!!![rr!!!&MJ"DhM!"!2rr!!!&Q!"DhL`!"J!!!!3!!!!#hLJ"!2rr!!!&TJ" +DhL3"!2rr!!!&X!!(!*!%rrm!!!C'!&VH(!%!rrm!!!Cb!&VH'!)!rrm!r`!!!#3 +%G'pdE`"!!-!!N!G!,3!!!!%G@J!!`#d!!!!916[!!0i)"J#3&2m!!!!N"(4TG'N +!3!'J!*!(3#d!!!!#%S3!!-!Y!!!!&6NlP98!N!S"6b8"EA"N)8&38%`!r`!!!%S +U+'0[ER4KD@jc)$3JCQPPE'4c1L"dCAKd,fjeE@*PFLpNBA4P,h4TE@8Trhrr3$) +!N!Crrd!b!*!'Irp!-J#3"R"bC@B%!*!-r`!!!&Jj+#"TEL"QD@9XC#!a1L"dEh4 +[,(4eG(8XG'PdD5XJG'KPFf8JCQPfC5"MEfeYC@jdFbFJE'PZCA-TIrp!-J#3"Rr +r3$)!N!Crrd!b!*!*r`!!!$)6+'PZ)'CTC@aN)$)k)$-X0#`e+Arr3$)!N!Crrd! +b!*!'Irp!-J#3"R"bC@B%!*!%$!!!!!J!!!%"!!i!CJ#3$Hm!N!81!!!!#!!#!!) +!!3!"!9i"0!%+!1!!YJ#-!')!1!!13Am!#!#3$!4!!!!!!3!!&m!!!!!#!!!%J!! +!!!-!!!6!!!!!"!!!"5!!!!!&!!!&J!!!!!B!!"J!N!3(!!!BB!!!!!J!N2m!N,0 +"I`!)!-)!N!JS)'PZ)'CTC@aN)$%k)(4[G'mXG(9dG5adDA4T+b"dD'9cC5"QDAC +P)'0[E@ePER4c*b"XD@jPFbNSBfpZG'&TER-J0#"QD@9XC(-k)(4PH(3[ER9YBQ9 +b,f4KG'8[G'PYC5NSD@iJCQPPE'3J-MSJ-b`d,$8T+'PZ)'CTC@aN)$-k)$%[-5m +d,$%[-c%[0#`a-Lma,cJj+5KTEL"QD@9XC#!d1L!c1M!`,#!d1M!`,#!e1M!`+A4 +TG'PdEh4[G(9dG3!jBhDBYVUq!!!!"3!!!!3!!!!'!!!!"`!!!!J!!!!$!!!!!3! +!!!)!N+d%(UJ!N&K"I`!)!*!4!3#3"`)!N!F$!*!("!#3"`8!N!F'!*!("`#3"`J +!N2m!N,0%!!!)!*!,!3!!!!)!!!!$!!!!"!!!!!8!!!!'!!!!"`!!!!J!N2m!N0B +*!!!%c!"EX4J!!3T%BA4K)%9ZG(*jV3!$r03!$$Pm!!N!H$Pm!!%!HQ!B!!%!"3! +"!!%!"!#3%!)R!!!!LJ!!!!S!!!!+!!!!#J!!!"m!!!!H!!!!(`!!!"i!!!!"!3# +3#38S!r`!5!")!!-!!3!!!&ZaP!!)!*!%!3!!!`!!!%J!5!#3"!,D!LMriIrL![N +#4J0("5J$r!!#!!!!5!")!*!%!YS#+!!"!!!!C!!!!!%!!3%"!!!!!5F2!!%!!3# +3$3)!'3'3!!#3"8!!N"`"Y!!!!+!!!!!%!!!!&!!)!$B"!!!@!!!!,3!!!#3!!!" +%!!!!!3!!!!%!!!!h!*!%!3#3&3S!!"3!!!"*!!!!*3!!!4%!!!!#!!!!!J!!!"` +!N!3"!*!9!3!!-3!!!"3!!!!r!!!!4!!!!!%!!!!$!!!!13#3"!%!N"8+!!![!!! +!53!!!%!!!!%4!!!!!J!!!!3!!!!F!*!%!3#3&3%!!%`!!!!S!!!!@J!!!%3!!!! +"!!!!"3!!!$F!N!3"!*!9#J!!5J!!!%N!!!"E!!!"%3!!!!)!!!!'!!!!(!#3"!% +!N"8"!!"R!!!!+3!!!(8!!!"%!!!!!3!!!!F!!!!h!*!%!3#3&3S!!'8!!!"*!!! +!GJ!!!4%!!!!#!!!!#!!!!"`!N!3"!*!@!`!d!!3!!3!!!!%!N"VrN!B!N!ErN!B +!"!!"!!!!!3!!!!(rN!J!N!lrN!B!N!ErN!B!!!!"!!!!!3!!!3(rN!J!N!lrN!B +!N!ErN!B!!!!H!!J!!J!"!!)!!`!%!!8!"J!(!!J!"!!%!!!!!3#3"48!!!!-!*! +)&!)!N!B#!3!9!!%!$!#3"[q3#J!!!!)!C`!!!#N!!!"e!!!!4!!!"(4TE@8!!`! +$!!!!!3#3"48!!!!-!*!)#J)!N!B#!3!9!!%!$!#3"[q3#J!!!!)!6!!!!#J!!!" +D!!!!4!!!"'4KG'8!!J!#!!!!!3#3"48!!!!-!*!(!J!#!*!'!J%!&3!"!!`!N!E +rN!S!!!!#!$%!!!!8!!!!2`!!!%3!!!CZG@eLCA)!!3!"!!!!!3#3"48!!!!-!*! +*!J#3"J)"!"8!!3!-!*!'rj!+!!!!!J!@!!!!,3!!!#3!!!"%!!!%G'9iG$!-J+) +`@!#M-+3!T$$`!!N!!!6-!&Za)!!$#%0[E(9YEQ&b!*!(J!!!$!!#LN!!!!!#K3! +!E!!"!#%!!3!#!!-!N"!#*`!!!"8!!!!8!!!!#J!!!!S!!!!I!!!!(J!!!"m!!!! +H!!!!!3%"!*!)"5J$r!")!%J!!`!"!!!!@l'-!!J!N!3"!!!$!!!!5!")!*!%!YS +#+2rKrq)#q3*'!dF&+!2m!!)!!!")!%J!N!3#fJ)S!!%!!!"N!!!!!3!"!3%!!!! +"*`m!!3!"!*!0!J!C!C!!!*!&3!#3(!'d!!!!S!!!!!3!!!!8!!J!0J%!!!3!!!! +"!!!!%J!!!"J!!!!"!!!!!3!!!$F!N!3"!*!9#J!!&3!!!!%!!!!Q!!!!K`!!!!) +!!!!#!!!!(!#3"!%!N"8"!!!%!!!!LJ!!!")!!!#k!!!!!3!!!!-!!!!j!*!%!3# +3&3S!!"8!!!#+!!!!*J!!!4!!!!!#!!!!"!!!!"`!N!3"!*!9!3!!"!!!!4-!!!! +5!!!",`!!!!%!!!!&!!!!0`#3"!%!N"8+!!!9!!!"%`!!!#B!!!'C!!!!!J!!!!B +!!!!F!*!%!3#3&3%!!!3!!!'F!!!!%J!!!EF!!!!"!!!!"`!!!$F!N!3"!*!9#J! +!&3!!!C`!!!!Q!!!#)J!!!!)!!!!)!!!!(!#3"!%!N"B$!$3!"!!"!!!!!3#3'[q +3"J#3"[q3"J!%!!%!!!!"!!!!!Iq3#!#3$[q3"J#3"[q3"J!!!!%!!!!"!!!"!Iq +3#!#3$[q3"J#3"[q3"J!!!"i!#!!#!!%!!J!$!!3!"3!'!!F!#!!%!!3!!!!"!*! +&&3!!!!`!N!J8!J#3"J)"!"8!!3!-!*!'rrm!N!ErN!3!!!!%!!!"R!!!!")!!!' +h!!!%G'PYC3!$!!-!!!!"!*!&&3!!!!`!N!J+!J#3"J)"!"8!!3!-!*!'rrm!N!E +rN!3!!!!%!!!"%`!!!")!!!%[!!!%C'&dC3!#!!)!!!!"!*!&&3!!!!`!N!F#!!) +!N!B#!3!9!!%!$!#3"[rr!*!'rj!%!!!!"!!!!)S!!!!5!!!!ZJ!!"QjeE@*PFJ! +"!!%!!!!"!*!&&3!!!!`!N!N#!*!'!J%!&3!"!!`!N!Err`#3"[q3"!!!!!3!!!! +"!!!!%J!!!"J!!!4dCAKd!*!2r`!!!#3%G(9dG3"!!B!!N!G!,3!!!!%GPJ!!`#d +!!!!916ZUUf9b!*!9r`!!!%)L+'PZ)'CTC@aN)$-k)$%[-5md,$%[-c%[0#`a-Lm +a,cJj+3"rrd!b!*!'Irp!-J#3"Rrr3$)!N"rr!!!!2KiSD@iJCQPPE'3J0$SJ-cS +`-#`J0$S`-#`J06S`-#N!Irp!-J#3"Rrr3$)!N!Crrd!b!*!M#!!!!)`!N!8T!LJ +!N!8T!LJ&+!2m!%J!5!!$!!%!!!!"!!%!!3!$!*!'rj!'!*!'rj!'!"8!!!!-!*! +*!3!!"JB!!3!"!!!!$!!&!!mrrD5mI4Ndp`NN3!,mqh*-Kj%jY!!"!")!!!"D!#! +!"J%!N!3*!!!!!3#3%`J!!!#-!*!&+3)S!*!&+3)S"5J$r!")!%J!!`!"!!!!!3! +"!!%!!`#3"[q3"J#3"[q3"J!9!!!!$!#3#3%!!!B'!!%!!3!!!!`!"3!22rfN[(d +C02F**%!#r2Yb6)H41E3!!3!5!!!!@J!J!!B"!*!%#3!!!!%!N"*"I`!)!*!0"hr +r3$)!N!N)Irp!-J#3#3Crrd!b!*!*"Arr3$)!N!N%Irp!-J#3#3&!!-!!N!S#3!' +!!*!+!d!"S!#3r`#3LN&r!!J!N!d)Irp!-J#3#3Grrd!b!*!*"Rrr3$)!N!N&Irp +!-J#3#34rrd!b!*!*!8!Y!!!!!4eD!*!&!N!Y!!!!!4f@!*!&!d!Y!!!!!K+%!*$ +r!*#&3Am!#!#3$3Krrd!b!*!*"hrr3$)!N!N'Irp!-J#3#39rrd!b!*!*"(rr3$) +!N!N"`#d!!!!916[!!*!%!X!Y!!!!&6NlUUX!!!!$`#d!!!!916Z993#3r`#3K!J +!!!$f!*!&+3)S!*!&+3)S"5J$r!")!%J!!`!"!!!!!3!!!!%!!$)X!*!'`F(rN!C +J"J#3"NcIrj!'9%m!!Iq3#!!$!*!*!3%P5J"R!!%b%L`"Z'B+JL`"ZF!"C`!")N( +ZrmT$l!$m)0NJf8KZrmT)E[rF6Ud@JNKZ!!")E[r+,c`!!3!"6VVqE%kY!!%!!3! +"!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ'Z!!!!&3!!!!`!N!N"!!!'X!! +"!")!!!"D!!!!"J%!!*!!!!N!!!!"!*!*#!!!!2B!N!8T!LJ!N!8T!LJ&+!2m!%J +!5!!$!!%!!!!"!!!!!3!!-L`!N!E"`Iq3"Q!'!*!'60rrN!C86`!"rj!)!!-!N!N +"!59+!'F!!6)5,!'iCJU#,!'j`!&R!!%L3HlrbN2X!2`Jf5$C5'lrbNKZrpa1V4D +#5'i!!%KZrmS[2!!"!!&1Z[jX6Ud!!3!"!!%!!!!,!!8!$MrpVk$9Hl3ei8G!!Zh +EDZFG)A@k!Di!AJ!9!!!!$!#3#3%!!!CJ!!%!%J!!!&S!BJ!'!3!!bJ!*!!!!!3# +3#3J!!!#-!*!&+3)S!*!&+3)S"5J$r!")!%J!!`!"!!!!!3!"!!%!!`#3"[q3"J# +3"[q3"J!9!!!!$!#3#3%!!!B!!!%!!3!!!!`!"3!22rfN[(dC02F**%!#r2Yb6)H +41E3!!3!5!!!!@J"E!!B"!!!f!!N!!!!"!*!'!4!!!!%&!!!"$!!!!!%!!!$m!!3 +!2J!(!!8!!3%"!!!!A!#3$J)!!!%%G'9iG!haa!"S[b)!D,mN!"MGMJ!!rj!%!!% +!N!8&!!8!!3%"!!!!A!#3$J)J!!)'ER9YBQ9ba!"S[b)!D,mN!"MGMJ!!rj!%!!% +!N!8*!!8!!3%"!!!!A!#3$J*!!!-%C'&dC3haa!"S[b)!D,mN!"MGMJ!!rj!%!!% +!N!8+!!8!!3%"!!!!A!#3$J*J!!3%G'PYC3haa!"S[b)!D,mN!"MGMJ!!rj!%!!% +!N#-0!!!"(!!%!%B!N!N"!!!!!@+B!!!!p%#!l%)!N!5J*!!!!23!N!KJAR&F!'L +0V!"LZGJ!AQ+B!!-G"N#!jC!!3)$LH!#3#3%!!!!"BTJ!!!$d3)$X3J#3"+!N!!! +!p!#3#'"HF9`!D)fX!'+jf!"HBTJ!!ad'3)$PN!"!J1*i!*!*!3!!!!&LQ!!!!24 +!J1a#!*!%S#3!!!$d!*!)B&jaA!"SMD`!BVRB!&jLQ!!$(3C!J1@3!%#!iRJ!N!N +"!!!!!@+B!!!!p%#!l%)!N!5J*!!!!23!N!KJAR&F!'L0V!"LZGJ!AQ+B!!-G"N# +!jC!!3)$LH2q3(J!)!!!!pJ#3"5N#+!#3"5N#+!8S!r`!5!")!!-!!3!!!!%!!!! +"!!!b,!#3"X("rj!'B!B!N!C-hrq3"P42!!(rN!J!!`#3#3%"*8S!C`!"-K)X!EK +Q#S)X!ER!!@F!!5*"l[r+3q`!r#$C)0P)E[r+5'lrh%kY&S*)EJ!!5'lrbLmm!!% +!!8kkrQa1V3!"!!%!!3!!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES"VJ!!!"8 +!!!!-!*!*!3!!"JJ!!3!5!!!!@J!!!!B"!!#3!!!*!!!!!3#3"2q3"!!)!!!!pJ# +3"5N#+!#3"5N#+!8S!r`!5!")!!-!!3!!!!%!!!!"!!!b,!#3"X("rj!'B!B!N!C +-hrq3"P42!!(rN!J!!`#3#3%"*8S!C`!"-K)X!EKQ#S)X!ER!!@F!!5*"l[r+3q` +!r#$C)0P)E[r+5'lrh%kY&S*)EJ!!5'lrbLmm!!%!!8kkrQa1V3!"!!%!!3!!!!X +!"3!12rf[S09lY$AK4d!#lGYUjadKGES"VJ"S!"8!!!!-!*!*!3!!"PJ!!3!5!!! +!@J!!!!B"!!$S!!N!!!!"!*!%2!!3+`!)!!!!pJ#3"5N#+!#3"5N#+!8S!r`!5!" +)!!-!!3!!!!%!!!!"!!!b,!#3"X("rj!'B!B!N!C-hrq3"P42!!(rN!J!!`#3#3% +"*8S!C`!"-K)X!EKQ#S)X!ER!!@F!!5*"l[r+3q`!r#$C)0P)E[r+5'lrh%kY&S* +)EJ!!5'lrbLmm!!%!!8kkrQa1V3!"!!%!!3!!!!X!"3!12rf[S09lY$AK4d!#lGY +UjadKGES"VJ"H!"8!!!!-!*!*!3!!"Q!!!3!5!!!!@J"I!!B"!!$b!!N!!!!"!*! +&N!"+V%&r!*!-rq!JEG1i,8Mrj#"Ydl3J8#e)rq!JE[rNF!5`D!!H9m!JE[rJ5QJ +!APl"`!&R*N+R6VVjK#"I3qlrm%(S!&3Lf#,B)YJLf%KZrr")E[rS6Ud%UQ!)5'l +rk%kY!@)JEJ!)3qlrk#$C)0P1ANje6PErq%MR!4JQEJ!)3QG1Z[mf-"p)`#i!+'h +6Z(!%X'`!(QBL,b`!N!!["dkY$NSQPbm(6Ud13L!X!*!!N!#I)'i!$##!8T0J$(! +"*S!JEJ!-)+`!N!"-haL!6PiJAe"26Y"19[rm51F$'#CZ!!`X,J!3+'h6Z(!%X'` +!(QF))%BJV!#!B!a`!5P!!)!J4L#X!)"`!l"X!"jA`()%XQ`!(PI"J!&R(L"')#` +!K0#3!&1!*S!JEG1d)&!Z+!"@[T0X##D(B!4`!5D!60mB`%jH)&rHr!!-6Y"19J! +!,`a#Tdkkq'iSAc!Z!!K63'F18d"R%P0!CaC63'FDB"iGE!"R!!TJ&Kem!!%!#Q! +1(@`!D!!+B!BGE!"T!!SSAdjH)&p86dl36PErr#m-+'h6Z$!X!#53!'`!)%M!d+` +!L#m!,c`!!(rr6Ud15L!I8S!j3!#FEJBjI!!"!*`jE!#@!*S[,!#3!$!X!*a)`#m +!6Ud15L!I18!!Q#KI6Pj1G8j@+&p1ANje6PBSAdjH6R919N&r!!%!N!`S!%!!!J$ +qmNkkr4CJ"Lm(6VVll%cI!-"1AL"I9%p1d%j@rrK)j`%)3UG1Z['!+&p`!E"8CJ4 +q!@!#IJ"1Z[UZ,`G1Z[[H60m3J%jH6R919[ri51F"#%+R6VVa8LKIIJ"`$l"8CJT +`!l#X!!*R!Ri"6VVkHLm(6VVlUNcI%)"1ANje6PErq%MR!3K#Tdkkm4iSAh!2X&4 +Q"(i"B!*q!%kkqN`["dkkqha-ha#!6Pj1G8j@rrK)j`%)3UG1Z[$`+&p`#,"8CJ4 +q!@!#IJ"1Z[SH,`G1Z[Y160m3J%jH6R919[ri51F"#%+R6VV``LKIIJ"`$l"8CJT +`!l#X!!*Q!Ri"6VVjkLm(6VVl'NcI%)"1ANje6PErq%MR!3K#Tdkkm)iSAh!(X&4 +R"(i"B!*q!%kkqE`["dkkqZa-ha#!6Pj1G8j@rrK)j`%B3UG1Z["J*PmS5h!#X&4 +I`()'XP4F`F!"C`4q!@!#IJ"1Z[Q#,`G1Z[Ub60mBJ%jH6R919[ri51F"#%KZrra +#Cdkkq,3SE[rmF"#`9'B%IJ&J&R!JX&4Q"(i"B!a`)E"8CJ4q!@!#IJ"1Z[Nk,`G +1Z[TU60m3J%jH6R919[ri51F"#%+R6VV[hLKIF!H`9'B%IJ&J!Ri!6VVj$#m(6VV +k22N-,`G1Z[SmD$`!!!%!!!!2e3!!$Y8!!!$Q8&0*-N&A4%)"!*!'!N9!!3!,!9" +656*"9d4$!3!)C'&dB5jRGc)J!J!!!&T%3P0D48*5!3!!3!!3!*!'@N4#8eT&3P) +"!!"!!"!!N",2XhKl!!!U!!!!%,Y38dNb39G34J%!N!B#6d!"!!X"8&0*-N&A8e- +"!*!'!NC!!3!,!9"656*"9eG3!3#3"J*%3!%!#`&38dNb4'PMG!%!N!B#8%!"!!X +"8&0*-P084%)"!*!'!Na!!3!,!9"656*69%4$!3#3"J*13!%!N!3D!!%"V`)m!#J +!-J!S!$)"e`*Z!#X!"3(D!RS!!!"i!!-!!!")!%J!N!3#fJ)Srq(riJ,j!NB$4`8 +S!r`!!J!!!%J!5!#3"!,D!LJ!!3!!!'3!!!!"!!%"!3!!!!%R$`!"!!%!N!d#!"N +"N!!!N!9!!*!F!`)!B2q3#+T9UP@U9DT9!*!)IrrrrrIrrrprrrIrIrrhrhIrrrp +hrrrrGrrIrhIrrIphrphrGrrGreArhIp9rphr9IrZreArZrp9reAr9Ip9rhIGGpe +hhAIG9Ep9reAl9Ip9ZeAr9EY9re@r9Hj9qeAZ9EY9lP@l9Hj9ZeAU9EY9VP@k9DY +9ZP@V9HT9UP@Z9DUU&DT9UP'U9DT&UP5U4DT8UN5U&DT%UP'U4+S4UN5U%DT!UK' +U"+S4UN5U!+T%UJ#U3+S!UJ5U!)JLL#+))SJLUJ#U!+S!UJ#U!"%!UJ"%!+S!)J# +U!#)!L!!L!)J!)J#)!#!!L!!#!)J!!!#)!!!!J!!)!)!!#!#!!!!!#!!!!)K%)K' +)4#)4%5*%L"%L4)L!3#!3#!3#!3%#"!J3)%#!i(!i(!i(Jm'$"`iF1($J`BK%)J# +)4#)!%5*%!"%L4!##4#J3+%5#!CR-CM1Cc'BcGl[GlRHlhHlZhEYhlYflGhqrhqr +hqrhqr[hlpqrI[hmIMmIMmIKm2[MaimH2(cjmGl[GrhHlhIrZhE[rlYflrhfleqr +AZhhq-fE-Q60Qc*QUN!M-N!L)N!Mr!!!!r`!!!)#3#2m!N!F)J)!)#)#!#'B!!!# +C!!!!riL)L2q)L)MrJ*!(r`$r!2m!r`$rr`!!rrm!!(H3#!$rrrm!rrrrIj!)!2q +3"rGrIrIhIhrhQIrrrfErrrm!GhGh!(GhG`"rN!I`N!32N!5CCQDCQ@CQQ3!)($j +r2K`)!!J8+P8U&!La-!-Ef-!-MB!3!L!"#%!%#"3L3B!"!J5!`#%5$!3#!Iq!J)$ +r#!J)!(prI`$hprH!3#!!!J3)!)*%185#!3%"q(3L4imA)R'rS,qp[Id&r9@J3%" +9#J3%L%3L%4%L4)L"3L3BJ8)N'+S!J!#)!)!!!i4)-!`#!3'!J%%q#!J8i`#3#bJ +#!)!!!!-'GM)Z-#ia'P0jE@&ZG'9M)%GbC@&d9fpbDh-JGM)Z-#ia!!!!&446H@e +KER4PBb"(FQ9KG&G[FQYcUJ!!"Q3!!J!)rj!'r2ccm`8&rrpNC!)#hGd)#!B'm[) +)#)5%4NB!!+@P!*!%e03#!UZVkZSI(lHh&"3!!'4N%4&@9L`X"3@3!*!!FA%k1X# +3"S#3"N#3"J#3"[q3#Xc-rj!%QCRrN!4QC[q3"$-crj!%!!$rrmc-rj!%c*!%rrr +-c*QCrrr-c'CQrrr-c$-crrr-c!!!rrqCQIq3"*QCc-crrjQ3"2rrQCPQC[rrQCN +c-rrrQCN!!2rrCQErN!4QCXc-rrpQCTQCrrpQN!6rrfCQ-c2rrfCQ!!$rrc-crj! +%-c2-c2rr-c1CQIrr-c0QC[rr-j!%rrmc-`!!rrm!!2q3"!!!c-crr`!!QCRrr`! +!CQErr`!!-c2rr`#3"-c-rj!%c-crrmb3"2rrQCR-c2rrCQE-c2rr-c2-c2rr!!$ +-N!6rrmb3#TQCc*!%CQE-N!3c-mb3"!!!c-bCQIrrc-bCQFb3"*Q3"-c-QCPQCXc +-QCNc-mc-QCN!!-c-CQErrmc-CQE-N!4QCTQCc-aQN!6-c'CQ-c2-c'CQ!!$-c$- +crrr-c$-cc*!%-c1CQFc--c0QCXc--j!%c-`c-`!!c-`!!2rrc-`!!-b3"!!!QCR +-c!!!CQE-c!!!-c2-c!#3"*QCrj!%QCRrrmc-QCRrrjQ3"2rrCQDCQIrr-c1CQIr +r!!#CQFc-rrqCQFb3"*QCc-bCN!6-c'CQQCR-c$-cQCR-c!!!QC!%rrqCN!6-c*Q +3#QCQQC!%-c1CN!3!!*QCCQErrjQCCQE-c*QCCQDCN!4QN!5CQ@CQ-c1CQ@CQ!!# +CQ6-crrqCQ6-cc-bCQ6-cQC!%-c0QCTQC-j!%QCNc-`!!QCN!!2rrQCN!!-c-QCN +!!*Q3"!!!CQDCQ3!!-c1CQ3#3"'CQrj!%CQErrmc-CQErrjQCCQErrfD3"2rr-c0 +QC[rr!!"QCXc-rrpQCXb3"'CQc-bCQ@CQc-aQN!6-c$-cCQE-c!!!CQDCQIrrCQD +CQFc-CQDCN!4QCTQCCT!%QCNc-fCQQCN!!'D3"2rrCT!%c-aQN!5CQ@D3#M-cCT! +%!!"QCM-crrpQCM-cc-aQCM-cQCPQCM-cCT!%-j!%CQBc-`!!CQB!!2rrCQB!!-c +-CQB!!*QCCQB!!'D3"!!!-c0QCJ#3"$-crj!%-c2rrmc--c2rrjQC-c2rrfCQ-c2 +rrc13"2rr!!!c-mc-rrmc-mb3"$-cc-bCQ6-cc-aQCM-cc-`cN!6-c!!!-c1CQIr +r-c1CQFc--c1CN!3c-jQCCQBc-jQC-j!%QCN!!$-cCQErrc-cCQE-c$-cCQDCQ6- +cCT!%-c0QCM13"'CQ!!!cN!6rrc13"-c--j!%QCNcN!4QCM13#J!!-c-!!2rr-c- +!!-c--c-!!*QC-c-!!'CQ-c-!!$13"!#3"[q3"!!!rrr-c!!!rrqCQ3!!rrpQCJ! +!rrmc-`!!rrm!N!6-c2rr!!$-N!3!!-c-QCN!!-c-CQB!!-c--c-!!-c-!*!%QCR +rr`!!QCR-c!!!QC!%!!#CQ@CQ!!#CQ6-c!!#CQ3#3"'CQrrm!!'CQc-`!!'CQQCN +!!'D3"!!!CQBc-`!!CQB!N!3c-rrr!!!c-mc-!!!c-jQC!!!c-fCQ!!!cN!3!!$- +c!*!'rrm!N!6-c!#3"*QC!*!%CQB!N!3c-qlZ!*!%hGd!N!5lZ`#3"+UU!*!%L)J +!N!4hG`#3"&99!*!%4%3!N!3L)J#3""%4!*!'lZi!N!6Gh3#3",Zl!*!%UUS!N!5 +)L!#3"(Gh!*!%998!N!4%4!#3"#)L!*!%%4%!N!EZlJ#3"0hG!*!%ZlX!N!5UUJ# +3")L)!*!%GhF!N!4993#3"%4%!*!%)L)!N!34%Hk3"Yf3"VZ3"UU3"SL3"RH3"P@ +3"N53"L+3"K'3"J#3#33!N!B"!!!"rj!'!*!*!Iq3"J#3"bd!!Iq3"J#3"eS!!Iq +3"J#3"iF!!Iq3"J#3"l3!!Iq3"J#3"q%!!Iq3"J#3"J%1!!(rN!B!N!B"1`!$rj! +'!*!*!`#3"[q3"J!!!!,rN!B!N!N#rj!'!*!(Y!!"lZi!N!5)L!#3"`%!!1lZ!*! +%998!N!8"!*!%rrm!N!5)L!!!!!(rN!6-c2q3"!#3"J(d!!)!#3!!!!5!!*!K"U3 +!!1!9rrm!!J!*!!!!#3!!rrm!!ZXq!*!%i"Irr`!#lF)!N!6J'2rr!!,Z63#3"FA +rr`!#!!3!5!!!!!5!!!!*!!!!")!!!'Arr`!#9#X!N!9Qrrm!!P4c!*!&D2rr!!* +9,3!#!!5!!!!%J!"9T`#3"Arrr`!#9E%!N!9prrr%!P@j!!#2j!!!rrr!!PBB!!! +!"J")!!!!")!!!!N!!!!%J!!!#3!!!!5!!!$(rrm!!QrR!*!&DIrr!!,`JJ#3"3) +!%J!!!!5!!*!%Drrr!!,`p!#3"@hrr`!#mCS!N!6J!2rr!!*6E!#3"3%!"J!5!!! +!")!!!!%!!!!%J!!!!3!!!!5!!!!#8kF!N!6`!2rr!!-*-J#3"2!"rrm!"!!*!!! +!")!!!!%!!!!%J!!!!2!&rrm!!`PM!*!%i"rrrb!$#Ad!N!6J"[rr)!-!"J!*!!! +!")!!!!N!!!!%J!!!!3!!!!5!!*!&i#,rr`!$#Td!N!6J"2rr!!-+V3!#!!%!!!! +%J!!+``#3"1!$rrm!!`V6!*!%m!Err`!$#bF!N!6`"rrr!!-,T!#3"!'!!!%!!!! +,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!Di!!J!!!!X!"3!12rf[S09lY$AK4d! +#lGYUjadKGES"0!!'!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ(Z!!8!!!! +,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!3)!"!!!!!X!"3!12rf[S09lY$AK4d! +#lGYUjadKGES"!!!"!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ$Z!!)!!!! +,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!2`!"J!!!!X!"3!12rf[S09lY$AK4d! +#lGYUjadKGES!,J!&!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ$b!!3!!!! +,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!&B!!`!!!!X!"3!12rf[S09lY$AK4d! +#lGYUjadKGES!#!!$!!!!#`!%!"%rr1bM##J4R&NN3!1,YXK)Bme$j3"@!!!"!!! +!$p8!!!l9!!!!jJ"DS-`BqJ!!!"`!jJ!*9e"66J!!!&*38Nj8!!!!AP""9#-!!!" +UGQ9bF`!!!(C69&)J!!!!JP"X9&3!!!#16RK&C!!!!*T(FN46!!!!TN4K5&-!!!# +b39*5F`!!!,i!!Irr!*!&AQ"J!!(rr`!!!"i!AQ"N!!(rr`!!!*S!AQ"3!!,rr`! +!!k!!AQ"![r6rr`!!!m`!AQ!8!!(rr`!!!q8!AQ"S!!(rr`!!#Nd!AQ"X!!(rr`! +!#P8!AQ"`!!(rr`!!#eN!AQ"%!!(rr`!!$9%!AQ!mZ4B!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_1.0.hqx new file mode 100644 index 000000000..fa49d2116 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_1.0.hqx @@ -0,0 +1,45 @@ +(This file must be converted with BinHex 4.0) +:#(0SC@9d,Q*h!%*AFh0#9fYc!3!!!!H!!!!"BQUN3PGVFd*AFh0#9h0c!*!&!3# +3"`%!N!B""`#3"!@-!!N!!!!*!*!-!3#3"!F!!3!2!!!!5!")!*!%![!#32rarqi +$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3# +3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3%!!!%(!*!)!3F!N$J'4f9ZCACK!#i!#R" +bC@B!N!G6ZA!!8lYJ!!!""!-#!J%"!3!"!!S!!!!K!!-!"`!0!!-!Q!)Q!!&NEh0 +e#@%!N!96ZA!!8lYJ!!!!5!!!!%J!!!")!!!!5!%"!3!#*QCZ!!JJ$'B3F$![!%k +Y"0SS3#!-@%pR4#m-6Ud!1LK!)&3JVH5S)%bJ+5"83QJ!"#"83QJ!"L"83QJ!##" +8F!!K3!!+)&4)D!!12c`$kA!22`"1V30b)%bJ+PK2)!`SE[rm6Pj1G8j@!!![$#K +Z!!JJ$'F`)&3JVH5S)&3r+!!%UCSJ$'FHF!![!#m-6Ud!3L!Z!!`)!!!!8%pR##m +-6Ud%iPK2+'lrr%jH6R919[rk51F"'#KZ!!JJ6+!T9Bmr2)!!,ca`FQ9QF!%I!%K +ZrrT)E[rm6Ud$-MiICQC9McmZrrS[,[rm)&4)D!!1,ca#9fYc,ca6G'&h6Ud#kMi +I"e"KCf8J*R!J9%KS!!j1V3-U9Bmr,[rk,blrr#"85'J!$R!$(`"1V3-L)&3aA`! +%)&3aE[rk!!JJ9#&Zrr`!#Q!!!+*`HU-H*NJ[#dkY#D)J9%(S!!iR5!!5)&3RD!! ++!$!J9$GS!!J!&P@2,`Y`!"m!6Ud#BNkY#E*`!F!V!"jb!")!5S&R*P@2)&3r+!! +),bJ!#NKS!!j1V3-+F!X[!%Ki!qY1V4656qm!#Q!85QX!''F1F!X[!%Ki!qY1V46 +58%mJ5k!I9BmJ9$mS!!J[+!!+5'J!$R!$(`"1V3-L)&3aA`!%)%bJ+NcZ')$rlNj +H6R919[rm51F('#CZ!!`SEJ!"!!p!!!%!N!3(!!Mrr`#3#'S!!2rrm+SJ8$&mrqm +!!`!&!'S1)2#U)P%M5!%!EQpbE@&X$#!!#J!$#!!!Ff*[E'31)!!+!!-3!!"cDA4 +KE'PM%5!!#J!$)!!!Fh9ZC'9bE'PZC@J!!")Jm+SJ8$&mr`"LD@FJBfpXG@eZ!!% +!!!"N!!!!&cmmJ!![2("L!!8!"!"N#b!!#J!$!J!!Fh*PC"m0)!!+!!-$!!"cCh* +PC@jS$#!!#J!$"!!!Ff*XG@84)!!5!!-!!!"c-6JJF'pTER4c$JmJ!!S!&J!!!(0 +MEh9bD@9bD!!#!!!!8!!!rrm!8lP`!(-!"3!$!!-!8!dJ!*!)B@aTCfi!$#!!#J! +$!!!!%faPCR31)!!+!!-!!!"6Bf9ZG'9b$5!!#J!$!!!!-h*TCfKd%!!$!!!!-J! +!rrm!8lP`!)!!"3!$!!!!-KiJ!*!)FfpYC5"ZG@eLCA*TEQFJCQpbE@&dF`!%!!! +!LJ!!rrm!N!B"#J!$!!8!LK)3!'ITLJ"6Z3!rr-b3#")3!!S!!`!L!(-rr-b3#") +3!!S!!`"!!(-rr-b3#")3!!S!!`"J!(-rr-b3#")3!!S!!`##!(-rr-b3#")3!!S +!!`#+!(-rr-b3#!!&!!!!0J!!rrm!N!B""!!$!!!!0L%J!*!%Irpr!(0[E@8JC'& +dC5"[FL"dD@eP)'C[FQeKG(-!!!B!!!"X!!$rr`#3"[a%!!-!"!"X%K!!#J!$!+! +!Fd!0R%!!N!B5%!!+!!-!`!"c3!hUB!#3"K)3!!S!!`$"!(0!$Ta!!*!'%K!!#J! +$!-3!FcrqJ!#3"`JL!!S!!`$(!(-!"`!!!#J!!2rr!!!!$!!"r#3!!`!!!#J8)!! +"r%acEfd!FfpYC5"QEh*YG@aK!!J!!!"Q!!$rr`!!!!`#C3!!!!-!!`"Q$k!!0!# +3"!%!!!"KBQ0NC3!8N!!!!!!U!Q9r!!!"2rq!!*!(&*!!Irm"I`#3"3)rrUU3"kX +8N!!!F`!!!$`!!!!$2rr99C!'9J!"!#m#!!8!!!!1!!!!5`"'!!!!!J!X!*!&5`" +'!!!!!J!X!!%!!3"I!%B!!!!#!#`!!J!!!%X!4J!!!!)!,!!$!!!!5`"'!!!!!J! +X!!3!!3#6!%B!!!!#!#`!"3!"!!8#!!J!!!!+"JCKBQ0NC3!$!!!)!!%!"`8!!!! +"!f8!#!!#!"-&!!!!!J8!!!!$$J(rri!!$3-!!!J!!`!0![rqJ!$rri!!@3%$rd! +!3!!"!3!"!3#3#3N!!`!+!!3!#3!$kV-!!!%!!!!"(!!!!"`!!!"'!#e!rkJp4[q +X3HlrM(!(SQ!q!#"Z!!`JV[qm-!G-lK!++R0SC@9d,Q*h-!!#!!!!3PGcFd*ADh- +!N!T#9h0c3PGVF`#3'-qb*Di!N!B"BJ8Z!&+(B"`J"J+!!!!!$dL!'E-!!(J!)!C +b%%kY!r)X!&1(F!'`KfhH61iBk2r@6Pj1G6!a-M-d06Bh1$P"3N0%48B!!%j@rra +)j`-B*Qi!$$`Z!")JEJ!)3K!S8e4-IJ&J$(!!%"4530M!)!G5KdM'[)GZlPQ2,`a +1V30kF!!3&0!!!!!)!%i!!J(F!RB!!!!-#d*PB@GXC9G[FQYc!!!"!!!!!4`!!!! +F!!!!4J"6[$JD&!!!!"`!4J!"Ge"[F`!!!"*69&)J!!!!(J2Trrm!N!Lrp2rr!!! +!$!#3"#5m: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_DB_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_DB_1.0.hqx new file mode 100644 index 000000000..db1f57899 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/BeagleWorks_DB_1.0.hqx @@ -0,0 +1,176 @@ +(This file must be converted with BinHex 4.0) +:#'4KG'%ZBRFa!%*AC'*#9fYc!*!%*#-!!!&LNq0#9fYc3PGNBN*AC')!N!8"!*! +(!3#3"J%(!*!%"B`!#3!!!!N!N!`"!*!%"`!"!!m!!!")!%J!N!3#m!*!rr(rlJ- +*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*! +1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!!!3F!N!J""`#31!C(C@jPGQ%#+!!"C'p +cG3Je!*!&8lPF!&1m)!!!!%J!!!")!!!!5!!!!%J!N!8"!LCQ2J#3"!0`!&'hQ!# +3"!%V!*!&C22Q!&2+E!"6bU3!!!!"!*!1$e0dH@aP9h*TG'9b)%a[C`#3ZJG3B@G +P)#C`!*$j,J!+F(*PCJ#3"e1jA!"6[#!!%`%%!`)#!3%"!!%!#J!!!#%!!`!(!!d +!!`#3"5`!"!!m!!!%G'9iG!4'Efjd!"YR!!46DATP!"YS!!96G(PXC3!ED3!&3fp +XEh)!'fS!!5d!N!3+!'J!8lMBrrm!b3!m!!!'ER9YBQ9b!*-i!!!!"J#3&%j@rp4 +)j`mB*Qi!%#KZ!!J"4`"6Z0Mrr`!)!$`!!!4NBA4P!J!!MlJ!!!!1!*!86PB!!#m +-+'i!##m-)'`!!J*S!&1if2rr!2`!2!!!"(4TE@8#5J"B6fF'-#i!$Q"H)'`!+#" +3)'J!%Le)rr`J8#CS!%K)EJ!1,`Y1V3Xk2J!$4`"6Z0Mrr`"Z!!!!+3!#!!*Z!!! +!"daKH@peG$%!N"K6Z3!!8lL`!&1iV!!)!3#3#Irrcl2JG!"6Z9`!8lLi!3#3#%J +!!!")!!!!5!!!!%J!N!8"!LCQQ!#3+f6c2[rr!!!"%!"4YjJ!N-3(8'&RC5!QF!# +31@6cMJ!!!-J!8EHB!*!,C-0+!!KTB!!)!!%!8m$`!&2'r!"6a0B!N&&6c(`!N%B +"N!3!!3#3"%E!!!!!#`!!P9J!N"K19[rd51F6'#KZ!!JJ$'B55(J#D%kY"0SS3#! +-@%pR!!3XGJ%J$'B8,`0`"Lm!6Ud%fPL2*Kp+J'B#GJ"+!fFB,`a1V3!k)&3JVI! +k)&4#D!!%F!"B6f!#F!!S6#"8)+hb&L"83LJ!"b"8F!!K3!!U)&3K3!!Z)&3K3!! +Q)&3K3!"))&4#+!"-F!![!%kk#$3J9#&!!#CBMbm!6Ud*SR!!*N"f!5),CKB[!h! +1,`"1V36D@)mQ(bC!)!YQ!RB!5J0R4RB")!YQ&#m$F!`[!2rr!!"BMbBI5S"Q!RB +!5J0R%Lm,6Ud,+L"6)#hN6L#!@%pJ!R!!*NXJ8b#Ym,JJ8c&m!(8!$("eB!*`!#" +8)8X!5#m,6Ud*SL"83QJ!-L"8)@i!$!"%IJ%J9"&(!$3J9"&m!!%!08)()&344`! +f)&4#+!!k)&3aI2rr!$j)H!A'6Ud'bL"8)8!!+L"8,bJ!+NkY#D)J9#mS!#T1V3F ++@)m[!%kY#D*#4hB'@%p)ab"8)'J!+L"3)!FL!-$m!24)3F,m!24)38*"d)%a[2r +r#!*)ab"8)'J!+L"3)!FL!-$m!24)3F,m!24)38*"d)&#-!J%5-Irr`!!!#SJ8#! +()J$!r!$d5%(#r!$d5%G#"3M!)"6!(8NHf4fk3!#"8)'J!+L"33QJ!!L"8)'J +!+L"3-,`!!8*(GJBJ9#"S!#SJ8%(S"F"#-(!!)&3JD!!U)&""k!@k%E`!!R!!-!G +54lC(EYBJ9#mS!#T1V3FU)&3[+!!U6Ud(%NKi"B41V3E+)&3K3!!Z)&3[+!!Z6Ud +*SL"8,bJ!,NkY"`TBMbm!6Ud*SL"8)'J!,L"33P"#4hB*6qm!$%M()&3JD!!Z)&! +J"q@!-Ecrr`J+3NCd&'"-5-FJ9#"S!#iJ8#!()J$!r!"m5%(#r!"m5%Irr!!! +!K%*`#!")ab"8)'J!,L"3)!FL!-$m!(a)3F,m!(a)38*"d)&#-!Jd-!C54V4'EV! +`"e*(YNGZML"8)'J!,L"3-Acrr`9F)&3JD!!Z)&"#D!9D)&3JD!!Z)&"#+!9B)&3 +JD!!Z)&"#+!9C)&3JD!!Z)&"#+!8b)&3JD!!Z)&"#+!8+)&3[+!!Z6Ud(+L"8,bJ +!,NkY"a)J9%)S!$FJ9%)S!$JJ9(!!)8!!6P"2)&3JD!"%)&!YD!#)rr3[2'4[Fh8 +JE[rd,`JJ8#"3)QJ!$%k4*N"36b"6,LJ!'#"8)8F!8L"6,LJ!(#"8)8F!9L"6,LM +rr`!!)8F!@L"6,LJ!*#"8)8F!AL"6(LJ!+5"8%8F!Bb"6(LJ!+L"8%8F!C#"6(LJ +!+#"8%8F!BL"6(LJ!+b"8%8F!C5"62#J!,#"8-8B!CL"-S#NJ5k!T)&0"k!!Z,8M +rq#m)5(J!rb"85'J!D%kY%FSJ8d(S!5iY52rm,`K)H!$r)&4)D!&S6Ud4bL",S#S +J9%(S!%!JZ!)-)%bJ+Nr[!"JJ$%cZ'-Mri%jH6R919J!!)'i!##"3ASJJ#%jH6R9 +19J!!51F"'#CZ!!`SEJ!)F!!3%ci!8NF-4`!HE`*q(L",)P4HL8M()!HJ,L"8%@i +!%`!'rrm!!2rd6Pj1G8j@!!")j`!S+'i!##"8ASJLEJ!-*&33+J!(5)"53%M!S#i +J9#*Z!"!5U!!'61i8!2ri6Pj1G8j@!!![$#KZ!!JJ$'B35(J#G%kY"0SS3#!-@%p +R3LmZ!!`[$%kkq[`S3#"8)+hai#"8F!!K3!*S)&4#+!*X)&34I!!"!R!J9"&m!!% +#F5"8%A`!!3*b)&34I!!"!R036b!-+'lrr%jH6R919J!!51F!'#KZ!!JJ$'B35(J +#D%kY"0SS3#!-@%pR,#mZ!!`[$%kkqT!!+%!J9##YmH4`!#m!6UdZ`LC!,`Y1V3Q +L)&3K5`"16qm#N!B!N!K19J!!,``SE[rr)!crrh"#rrp1VIrr+%$rreK2rrm`,[r +r5-$rrbmZrrm[$%kY+cSS3!"8)+hb+#"8)@i!&!!k)&4`!"!S!$J-3!!&6qm!$#! +-+'lrr%jH6R919J!!,``SEJ!))!aQ%(!-,`"1V36U+%!J$&K2C`j`rbm!,`a1V5C +b!!"36b!-+'lrr%jH6R919[r151FI1#KZ!!JJ$'B5F$![!%kY"0SS3#!-@%m!!!( +3GJ%J$'B8,`0`"Lm!6Ud%fPL2*Kp+J'B#GJ"+!fFD,`a1V3!k)&3JVI!k)&3aI!" +C!!4`@9K2B!*`!#K-)&3JVI)J)&4)D!!+6VVrAJ!!)@i!$!!'2A`!#[rd2A`!#[r +bI!jq3AS$)&4(k!!+2Acrrrrf3J4`!"!%!)!hE[rf!!*+VJ!3@%pR!!$S)&4"k!! ++,8Mrr#"Z!"!J8#"S!)`Y52ri3HJ!+#C))'lrr#*,4HJ!"#6C*0NJEJ!3)&!JD!# +d,8MrjL"3*QJ!!#!,C`!!SL"6)'J!*Le)rpSJ8$JS!!B[,J!36UdR+LC!@%mJ8c` +S!#j54J!*cqJ!,#"61LJ!-%T%Cc)`"&0!5-![!#mZrpT1V8@5,8$rcLm!5'lrdNk +Y3bSpE[r8rr3`,[r@@%!p32rb6qm!%%KZrpi[#dkY*YS3,[rL!!!#J!!!!"q![!! +!!!%#,J!(rq)L!1F*JblriL"83qlrhNAS!"BNf56C8%m!E[rU,blrmM!(d'lrp$m +!-!E3E[rb2`#STb"83qlrkNAS!"iNf56C5'lrkM!Zrr"63$m!2blrmM!(d'lrm$m +!-!E3E[rb2`#STb"83qlrkJ!!!#BNf56C)&3a43!Z)!a-lKcirkj1ANje6PB!!%M +R%!JSEJ!))!aQ%(!3!!"1V36D+%!J$&K2Cd*f!5!-CK3[!h!3,`"1V36D@)mQ(dU +!CJ*f!%S$CaS[$%kY#USJ9##Ym$iJ9$&m!&S!$("D@%pJ!R!!+%`J9##YmL3!!%c +Z%!Mrq%jH6R919J!!,``SEJ!))!aQ%(!H,`"1V36D+%!J$&K2CaS[,J!3,bi!$#m +-6Ue'ULK!)&3JVI+)6qm!$#!-+'lrr%jH6R919J!!6Pj1G5"8!!!24!!@N!"T!") +p32rqB!`pI!,3rr`pI!)FrriJ,[rm+'lrq!!!6R919J!!51F"'$iZ!!iSEJ!))&5 +qD!!mCb!QD!!N-8F!2#!,Ca3[#dkY!#S[#b"6)&!LD!"F6T&36dcZ')$rp%jH6R9 +19[ri51F6'$iZ!!iSEJ!),$`!C!!!,bhYi%kY&q)Y32rmF'X[!#mYlH"1V4ID@)m +[!%kY&VS!!!a(J!"2l`!-CK"`!"m!5(S"YNkY#C*J!!'N$%GrrfBd)&3YD!!NrrJ +J9!"(!$T+V[riC`!"L#mZrrK1V4`U)'lrq#m))&!J8#*S!&a1N9"2B!!"DJa(rrj +X"(lqB!J-4`!$E`*q!b"8[QJ!1QG',@J!*2ri)&3a4`!k!!$rq'FD,blrq%kY(#S +JE[ri,`JJ8#"3)QJ!A%k48%mJ9#"S!'BJ8%TS!!KR$#"8,bJ!CNkY$h*B6dT(Ea! +J"ZqS,`![$%kk!6*36f!85-FJ"d5!)JEJS5m",`a1ZJ%F8%mJ9(!$X'J!1QBQF2m +[!%Ki"")[,[rm6UdF8R!!,`")H!34,blrr%kY(&*2l`!BB&3J9($qX'J!1QBQF!! +[!%Ki"")[,J$m6UdF8R$r,`")H!34,blrr%kY(&*2l`!BB#4`!#m!5(J%%LmZrr` +!V4a5F!![!%Ki""%[,[rm6UdF8Nr[!"K9Mb"6,bJ!"+P32KpJ'J#3"2rr,`F[#b" +6)&!LD!")6T&2l`!-8dG+4flL)&4`rV"S!$TZ*R!$X'J!N!9D!!3!!!",!!S!!`! +!!(-!#J!$#!!!F`!+!!S!'!!Q!!S!*3!B!'8!!3",!!S!!`!!!(-!#J!$#!!!F`! +F!!S!+J!l!"`!1J!U!(S!!J",!!S!!`#J!(-!#J!$#!!!F`!Z!!S!2!!Q!#i!*3! +m!'8!!`",!!S!!`$%!(-!#J!$#!!!F`"!!!S!6J!T!%!!+!"1!'J!%!"e!!J!!!! +"!!)!!`!%!!8!"J!(!3*L!!!""daKH@peG$*3)QJ!5%k46qm!$%cZ'-Mrj%jH6R8 +X9!"6Z+!!8lL3!!"6Z)`!#!%!N!4K!#"ZErrrcl2JG3"6Z9`!8lLB!AN!8lL%!!! +!5!!!!%J!!!")!!!!5!#3"3%#*QB-!$BJ$&K2C`a)H!36,`a1V4ND8%mSE[rm6Pj +1G8j@!!")j`%B(Li!$bKZ!!JJ9,iS!&&R'LCS!#344`"4)!YR$Lm,)&-J8#*S!&a +1N9K261iBJ2rd6Pj1G8j@!!!JEJ!))&!4EJ!2!&*1ANje6PB!!%MR!4JH,J!2+'i +!##"8[LJ!8fFD*QJ!*"&(!&-J#fF1,`XJ8b"3)QJ!A%k4@%p-lKL!rr41ANje6PB +!!%MR!aJF,J!6(Li!$bKZ!!K+"QF))&5q+!"BCJa+"QBf)&5q+!"CCbiJ9#CS!#4 ++"QF'%8F!@'!')&344`"C)!YR&#m,6UdF+Lm,)&-J8#*S"e"KCf8J*R!B`2r`6Pj +1G8j@!!")j`%B(Li!$bKZ!!JJ9,iS!&9R)#CS!#344`"9)!YR&#m,6UdF+Lm,)&- +J8#*S!&a1N9"261iBJ2rd6Pj1G8j@!!")j`%B(Li!$bKZ!!JJ9,iS!&CR)#CS!#3 +44`"@)!YR&#m,6UdF+Lm,)&-J8#*S!&a1N9"261iBJ2rd6Pj1G8j@!!")j`%B(Li +!$bKZ!!JJ9,iS!&TR'LCS!#344`"D)!YR$Lm,)&-J8#*S!&a1N9K261iBJ2rd6Pj +1G8j@!!")j`!B+'i!##CYj'iJ8b!S!#!%J%06G(PR(!5!-!rXmfBF)&-`+!!Q5-! +[!!!"!*!%)!YR,#m,)&-J8#*S!#a1N5e!rra)E[riU(3[,[rmU(-[,[riU(0`!5m +!,`a1V4H561iB!2r`6Pj1G8j@r`")j`-B4qlr!$`Z!!iSEJ!)5-B["L"8,bJ!ENk +Y#j)q!!a(rrp36fBd2`B[#kMr5-B["Lm,)&3[+!"Z6Ud,HNM',`BJ9#mS!'j1V3Z +52J!-4rrr6qm!&'B%F!"J!K!(61iB`2l`6Pj1G8j@!!"`!"!Z!!m[!#"Z!!JJ8#m +S!'j1V3Z#6Pj1G8j@!!")j`!B+'i!##"8*QJ!2L"65P"[$#*Z!!`cD!!#!!CJ#L" +Z!!`aI!!$rrm!!#CS!%)J8dT3E`SLEJ!--UJ!!Q!))'i!$$#m!!`J9#CS!%BJ8dT +3E``LEJ!--fJ!!J!%B!SJEJ!--A`!)3!%9BmJ9#mS!%USDb"Z!!`aA`!#61iB!2r +i6Pj1G8j@!!"1ANje6PB!!(!"6Pj1G8j@rrK`!#e!rr`Y32ri)'i!#%2ZrrJJf5$ +C6Pj1G3!!#-6rr`!"I#-!N!8"rrr!!Amc!*!%r"Irr`!"JJ%!N!6J![rrp!'$$3# +3"1!"!!hd!E(*!!KTp1!!!",`!JdM!!KTk0rr!"R`!K,h!!KU)0rq!#A`!NeA!!K +TN!$Ir3!`rrm!!!!)DBcIr!"'-!*A23#3"0rl!&8`!V-(!*!%hrS!CI!#Yb%!#'P +FhrN!FM!#kkX!N!6Iq!"m-!,q*3#3"0rh!)%`!`'j!*!%hrB!M6!$#X-!N!6Ip3# +Am!--d3!)DA6Ip!#Fm!-b43!)DGMIm`#M-!0$S3#3"0rb!+X`!fdT!*!%hr%!ZM! +$F2%!N!6Im!$(-!1$i`#3"0r[!0)`!iLc!*!%hqi!i$!$N@d!N!6Il3$Y-!1F"`# +3"0rX!2X`!kL0!*!%hqX"$6!$UP-!N!6IkJ%D-!2EE`#3"0rT!58`!pZjrrm!!0r +S!6%`!p`K!*!%hqF"3$!$h*-!N!6IjJ&,-!2ae`#3"0rP!9B`!r-j!*!%hq3"B6! +$pi-!N!6Ii`&[-!2hk3#3"0rL!Am`!rJe!*!%hq%"Lc!%'!-!N!6Ii!'C-!3HN`# +3"0rI!D%`"&m6!*!%hpi"V$!%Bhm!N!6Ih3'p-!4NR`#3"0rF!G%`"'C4!*!%hpX +"jc!%Cqm!N!6IfJ(d-!4ST`#3"0rC!J!`"'P&!*!%hpJ#$c!%DRm!N!6Ie`)J-!4 +Z'`#3"0r@!LJ`"'r"!*!%hp8#-6!%FCm!N!6rr`!!-!4aY`#3"0r6!NF`"*ha!*! +%hp)#6M!%Sq%!N!6Id3*D-!5ff3#3"0r3!QB`",UC!*!%hmm#F6!%[E-!N!6IcJ* +k-!6Yi3#3"0r0!SB`"1rj!*!%hm`#N6!%ml8!N!6Ib`+E-!8'-3#3"0r+!U)`"3I +9!*!%hmN#VM!&&NF!N!6Ib!+j-!8BB`#3"0r(!XF`"4NC!*!%hmB#fM!&'Xd!N!6 +Ia3,X-!8EE`#3"0r%![J`"4q0!*!%hm-$#6!&+0N!N!6I`J-Cm!8Vi3!)DH$I`3- +J-!9%Y`#3"0r!!b[rr`#3"Yqr!c8`"@8P!*!%hli$4r!&CC8!#'Q)hld$82!&CT8 +!#'Q%hl`$@[!&KL-!#'RFhlX$Ar!&L)-!#'PihlS$C6!&LGN!N!6IZ30d-!@+P`# +3"0qi!i)`"CJ(!*!%hlF$N!!`"CM2!*!%hlB$Sc!&TDF!N!6IY31e-!@X9`#3"0q +d!l``"DbP!*!%hl-$c$!&XUm!N!6IXJ2H-!@pr`#3"0qa!r!`"F($!*!%hl!$rM! +&b@-!N!6IV`3$m!AB@3!)DB$IVJ30m!AE0`!)DAcIV33Cm!AF33!)D@MIV!3K-!A +GX`+3"J#3$"R)!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrp19[rr51F +"'#iZ!"3!EJ!-+'i!##!-CK"`&Lm!6Ud%fLK!)!aB6fG@,`a1ZJdS+%!J9##Yj+3 +J9#&,!!iJ9"&Z!"-!"($rX)GB6fBF,`Y1V3iU)&3K3!!5,`Y1V3!!)&3K3!!'8%p +J$L"8)@hXc!!5)&3K4`!')&4`!#&!!!SJ$%cZ')$rp%jH!(919[rF51F"'#KZ!!J +J9#CS!!j`!5m!)'J!%L"3,bJ!2%kY&j)J9"!S!!46!&"2C3!#1J`!!!4L!!)bFJ! +5!0*"-MX3"Nll%!!!'!!-!L3!!!%`,`a1ZJD8@%pJ!!)1)&3[+!!56UdJqLe!rq! +J9#"S!!UJ+5"8)'J!#J"3rp`J9$!S!!K)`#m!,blri%kY'F*)E[rZ5'lrl%KZrr4 +)E[r`)&3`+!!)5-![!#m,6Ud1dL"Zrp`[+!!1,bJ!#M!S!"*)`#m!)&3`+!!)!!! +[!#m,6Ud15L"8-#J!#%M!,`![,[rJ6UdC`R!!,`![!%KZrra)E[ri)&3!+!!)5-% +[!5m,6Ud1dL"8)'J!%L"3,@J!22rN-#lrlNM!,`!`,[rX5-![!#mZrr`[,[ri)'l +rh$!S!"*)`#m!-#lrlNM!,`!`,[rX5-![!!!!rr3[,[r`-#J!#%M!,`!JE[rN,`J +J8#"3)QJ!V%k4)&3JD!!+S#T2l`#%!!!!pL"8-#J!#%M!,`![+!!5,bJ!$NkY$fS +Z!#m,6Ud0iL"8-#J!#%M!,`![#dkY$e*b!$)!5S%J9#&"!!SJ9(!%X+J!#Nr[!"K +Q'(!),`#3"!K)`5m",`Y1V3pD6qm!$'!BF!B[!#"8-LJ!#%M",`%[#dkY$eT2l`! +-!!Y1V3p+5N"@`%3!5)")`&L2,`"`"bm!FQ8[!5mYlH"1V4I5)&3[+!!5)'J!%L" +3)&!LD!"%6T%Y32rS+d$NCL"8,bJ!%L"S!")J8#"3)QJ!!%k4@)m[!#"8,bJ!%Nk +Y)2TBMbm!6UdLHL"8,bJ!%Lm(,`Y1V3hD6qm!+!$Z')$rd%jH6R919[r%51F"'#K +Z!!JJ9#eS!!lrr(!",`!J9#"S!")J8#mS!$a1V4H5)&33+!!%8`"36f8!!QB-!!! +%BJ!#AR)!%J$536)l!!"1qa!!!"J!$!*3!6J"4#m-6VS&@PK2B!!#1PQ2U0JYArr +))&3JD!!+S#N!9#"S!!SQ8#"8,bJ!%NkY)2SY32r%)&3`+!!)5-![!#mZrm41V4R +#5'lrkNKZrqK)E[r`5'lrl#"8-#J!#%M!,`![,[rm6Ud1dLmV!!3[%`!!!!K)`#m +!)&3`+!!)5-![!#mZrra1V3j+)&3`+!!)5-![!#mZrm41V4R#!!![!#m!5'lrq%K +Zrr3J9$)S!!K)`5m",blrr%kY$Y)J9#"S!")J8#eS!$cri$!ZrqT)`#m!-#lrk%M +!,`![,[ri,blrp$!V!"*)`#m!-#i!!%M!,`!`,[rS5-![!#mZrr![,[rX-#X!#%M +!,`!JE[rJ,`JJ8#"3)QJ!V%k4)&3JD!!+S#S[,[r)U0P2l`#%B!!"'Lm-6VS#m&K +2B!!"$L"8*QJ!%LeS!!lrc#"8-#J!#%M!,`![#bmS!!j1V3pU,J")E[rD5'lrf#m +,)&-J8#*S!1"1N5e!rp`J9(!!-#J!$#m!-#J!#%M!,`![,[r-6Ud2@NKZ!0!J9#m +S!")JD!!5)&!J8#*S!$"1N5m,)&-J8#*S!%41N5e!rq3V3!"Q,`XJ8b"3)QJ!4%k +4@)m[!#m,6UdJqPL2,`"1V5*k,`X["bmZ!*!%rrpCMbmZrpa1V3%UF!5`RfB5,bl +rh%kY"`Tb!")!5S&B6f!#FJ&)EJ#3"9S!"!!!rrm!#J!$!!!!F`!+!!-)!!"c!"` +!#J!U!%N!(!")!#S!L!!"rrm!#J!$!!!!F`!+!!-)!!"c!#i!#J!m!%N!,J")!$` +!L!!#rrm!#J!$!+!!F`!+!!-)!!"c!%!!#J"1!%N!3!")!%i!L!!$rrm!#J!$!-3 +!F`!+!!-)!!"c!&)!#J"J!%N!8J")!'!!L!!3!(8!#!!!!!%!!J!$!!3!"3!'!!F +!N!8(!!F!N!GF!!$rr`#3#3-!!`"F$#!!!!%[J!!!!(4[G'm5%!"6YjJ!8lF!3!$ +!!*!(%K#U9DT9UP@!!%!Y!!!!!4eD!!!5%!!-!!)#A(3!3#d!!!!"1a"!,!!"!!! +!A!!!rrm!N!F*!!-!!`"F$#!!CqQ+!&1j!(4eG(85%!#3#%!"J!#3"a)3!*!)3#d +!!!!"(CB!!")3!!`!!Ic8!!"!,3!!!!%l%&@A!!)!!!"F!!$rr`"RkBS!8lP-!!- +!!`"F$#!!N!KdDA4T%K#k#!#3"N!"S!#3"a)3!'J!!!!-!!"!,3#3"28U!!!5%2h +m!!S!N!4!,3!!!!%l%'X%!!-!!!"'!!$rrbaZG@eLCA)X!!-!!!"'-L!!CqQ+!&1 +j!#KMEfjdB@PZFb!d)'CTC@aNFcSJG'9iG#aZG@eLCA)XC'&dC5adD@eP+3!%!!! +!9!!!rrpQD@9XC#!a+J!$!!!!9$mJG(8XG'PdD3!SD@iJCQPPE'3J-6SJG'pdEba +dGA4e,(4TG'NVG'KPFf8JCQPfC5"MEfeYC@jdFbFJE'PZCA-T!!!&!!!!-!!!rrm +!+!!@!')!!!!$!!!!-"XJ!!S!$!!S!!!SD@iJCQPPE'3J-MSJ-b`d,$8T&J!'!!! +!2J!!rrmJCQPPE'3J)`!$!!!!2LSJ-5mc-3#3"#KTEL"QD@9XC#!c1L!a,c%[0#` +a,c-a,c3X-6)[-5mi15N!"`!!!$J!!2rrCQPPE'3J0#S!!`!!!$JN)$!`,$8!N!3 +SD@iJCQPPE'3J0$SJ-cS`-#`d1M!`,$8k-$!T!!!!!`!!!!i!!3",!!S!!`!!!(- +!!!!"!%X!#J!$!!!!F`!"!!%!5`!+!!-!S!"c!!)!!3",!!S!!`$%!(-!!`#3"3) +!N!AV!!!!"`!"!!J!!J!(!!&J%`!!!3!!!!%F!!!!(!!!!%BN&3&Qqbi4!4F"hlc +i2&X&!$1($fN&*`4j$k&kJ3&QH`SUC'&dB5jLGc%`!!)!!!"#9f4L3PGVF`#3#N* +AC'*#9fYc!*!Bcl2K3!#3"J&L`iXm1aJl5d6KDk*V'0X#`BJl%&-$3`k"!(-9DbV +E$3-$(JS!@eYD5!J+,(X!$+)F+)@-q!p#Z#NX*43-U+,VBkY5$a*`QaK&1aBXmeA +$$+Y52Z-Rd"*E!X8e8dHS2&CV!PF&,$ciZ`9QUe)T$S%-$`%5&`'dUe*X$`!VD34 +)i3"P"J!!!!J!6J!#!G`#GJ!!!!`,3Q9KCfaP9fpbDh-!!!%!!!!"(!!!!"`!!!" +'!&1m3"S8!!!!(!"'!!&h8'pc!!!!%P088L!!!!!H!qRrr`#3#,rdrrm!!!!-!*! +%LTX!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisResolve_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisResolve_1.0.hqx new file mode 100644 index 000000000..2e9546ca8 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisResolve_1.0.hqx @@ -0,0 +1,43 @@ +(This file must be converted with BinHex 4.0) +:#A0SC@9d,R*cGJ"5FeGc8R0XGJ%!!!!(I!!!!8DiV%*"9&p#9&06-$%`-3!!!18 +"!*!)(-Ga(-GaE$m!!!!2rrrr!*!%!Iq3"!!!!!(rrrm""3!8!"3!!!$qr`#3"J) +%!!!!$rrrr`#3"!(rN!3!!!!"rrrr!38!&!!8!!!!r[m!N!B#"!!!!!rrrrm%!!! +!!Iq3"!!!!!(rrrm""3!8!"3!lZlZ!Irrr`%!!!!"rrrr!38!N!3"rrrr!38!N!3 +'rrrr!38!N!33rrrr!38!N!8+!3C(C@jPGQ%!N!JF!!!!"!#3#`e"99428d&@45j +#380,!*!%rhrrI`!!r[m!N!Eqr`#3"[lr!*!'r[m!N!Eqr`#3"[lr!*!'r[m!N!E +qr`#3"[lr!*!%13!"!!!!"!!-!!N!N!Aqrrlr!3#3"`3!!J#3#3%!!!!"!*!0"3! +(!'X!D3#3*3%!!3#3"Jrrrrm"!!!!!Irrr`%&!*!%$rrrr`3!!!!"rrrr!38!N!3 +2rrrr*!!!!!(rrrm"&!!"!!%N!*!+!3!3!2rr0!-%!0`&"3#X$Iprh!8#!!J!rrm +%!Ipr"!%$!!!!"!!!!!9!#3!!!!N!"3F!!J!%!!K!$!!!!!%!N!3C"(4PH(6r#%! +2!!%!!3#3""J!N!E`2rm)3"3!!J!"!!!!"!!!!2rr,!#3"JK!r`K!%J!$!!%!!!! +-#!#3"IlrrrqR!Im*3#!!!!!2!!!!#J#3"`rrrrm"h3!!!3#3"!C(C@jPGQ%*3#! +!!3!"!!!!#J!"!*!&$rrrr`(G!!!"!*!%"NGPEQ9fB3P!)!!#!!%!!!!+!!)!N!8 +2rrrr!Gd!!!%!N!3'4f9ZCACK#8!J!!-!!3!!!!S!"!#3"3rrrrm"h3!!!3#3"!C +(C@jPGQ%*3#!!"!!"!!!!#J#3"`rrrrm"h3!!!Gd!!!!'4f9ZCACK#8!J!!8!!3! +!!!S!N!F2rrrr!Gd!!!%!!0d!"NGPEQ9fB3P!)!!'!!%!!!!+!*!($rrrr`(G!!! +"!)J!!!C(C@jPGQ%*3#!!"`!"!!!!%J#3"`rrrrm"h3!!!3#3"!C(C@jPGQ%*3#% +!#!!"!!!!#J#3"`rrrrm"h3!!!3#3"!G$Eh9bD@9b#8!J!!N!!`!!!!S!N!F2rrr +r!Gd!N!F'4f9ZCACK#8!Z!!S!!3!!!!S!!!!"!!!!$rrrr`(G!!!"!*!%"NGPEQ9 +fB3d"SaXE'aiE'a`G("`F#8!Z!!X!!3!!!!S!!!!"!!!!$rrrr`(G!!!"!*!%"NG +PEQ9fB3dE'aXH'aXFN!F-3&8!N!8&!!)!!J!!!2rr"Qj[FQeKE!)!!J!"!2rr"'* +[E'3#!!)!!J$rr`CTG'&XD@-$!!)!!`$rr`PeEQ4PFQaTEQ8!!`!#!!!!rrm+BQP +R)'0[E(9YEJa!63!"!!!!"!!#!!)!"!$rr`0bC@3#!!)!"3$rr`4LE(9P!J!#!!B +!rrm&Ch*PC@i$!!)!"`$rr`Na1#"`EfPZG(-#!!)!#!$rr`GMEh9bD@9b$%"-!!) +!!!!$!!-!!J!!!2rr,@0SEfpcD@jR)'&XD@GZ)'PZ)'0PE'`JC'pPFb"ZEh3JFf9 +PE5"`Eh0cD@*XC3%!!J!!!!%!!J!!!!%!!J!!!!a!)!!$!*!&!`!#!!!!rrm6Ffp +YC5"ZG@eLCA)JCQpbE@&dF`a!C!!%!!!!"3!&!!)!!!$rrjUCN!A*2`8!%J!*!2r +rQTQ3"FNr"3!L!JN!rrqDQC!&b6m&!$!!#3$rrjUCN!A*2`8!iJ!+!2rrQTQ3"FN +r"3$L!!X!rrqDQC!&b6m-3#-!"3!!!!%!!J!#!!!!rrm'B5"NBA4P"3"5!!!!rrm +!N!4!b10!$%!C!!B!N!8$!!)!!!$rr`acEfeP)'C[FQeeE'%-3%%!"`!!!!-!)J! +#!*!&"(4PH(3P!!)!!!!"!*!(m$mP!!)!!!!#!*!(#%!P!!)!!!!$!*!(%%!43!` +!!!!,+"XE'aiE'a`G("`43!N!!3!)+"XE'aiE'a`43!N!!J!)+"XE("dF!8X43!d +!!`!-!D-E'aXH'aXF(4`F%8!3!!3!$aXE'aiE'a`G("`8)%40)K&!$J!&!!dE'aX +H'aXF(4`F*J&'%8!,!!B!#J'd*KXE'aiE'a`43!i!"`!0!D-E'aXH'aXF(4`F("& +!$J!)!!dE'aXH'aXFN!F5!!!!%`!!!'8!#J$rI`!!!J!#!!!!CJ!+!2pr!!!#!!) +!!!"R!#!!N!BS+"N!N!`)!!-!"%N!N!4N!2m2!!"DT3!!!3!!!!%8!!!!&!!!!$) +!&3#3"G3"-!!"!*!)$jm!N!39!*!&#A0SC@9d,R*cGJ)!!!"5FeGc8R0XGJ#3$&* +c9h05Ffaf!*!Bcl)h@J#3"J&'!0S!PJ%J"!46BACP!*!&RJ$D!,!")!3'3f&ZBf9 +X!*!&L!!1!*J!aBJ)8f&fC5"KFcS!N!8G!-B!-3%ZJ!#3"MJ!fJ"+!5!%"89UC@0 +d!*!'8J$D!'3")!3&4(*TGQ8!N!DG!"%!V3$#%!#3"Kd!$J!!!"!23faKFQPc)&* +PFfpXGQ@U!!!"!!!!!43!!!!8!!!!-J!$!R3%DJ!!!"`!-J!!8e45)!!!!!Urp2r +r!*!)kbS!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_2.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_2.0.hqx new file mode 100644 index 000000000..b9bc98144 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_2.0.hqx @@ -0,0 +1,102 @@ +(This file must be converted with BinHex 4.0) +:#A0SC@9d,Q0hD`"$9e063Np#6`%!!!!H4J!!!8)+9J)!2!0#6d*2!!%!A9`d!*! +%!aJ#C!!N!#3!*!!N!#3!*!,d!N!"!!!"!*!5!3!!!J!#!!!!A9UX!*!(!3!"!!) +!(&La!!S!!!!"!!!!!3"G@U`!N!3$!`#3$9eF,!#3FeeCm!!!!&eF3!)#!*!&&3! +!$!%!!!!"!J)!!!%!N!8"!!!"!!%!,3!!!3!"!*!%@J!!!")!N!8'!3#3"!%!C!# +3*3`!!2rr!!!!B!!!!!)!!!"i!!m!!!")!%J!N!3#m!*!rr(rlJ-*!P*M!J8S!r` +"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*!1%!#3#4!!rlA +rTJmY#jS!#!%!N!dC!3#3&a`!!2rr!!!!"!!3!!%!"3!!!3!"!3!!!3#3#PeKJ!) +!N!3"!!J!N!Vrr`#3"2rr!!%!!3!!!!%!N!X"!)N!N"8T!!!"p3#3"3%!!3"5!QX +!N!88!DB!N"eG@YJ!N!PG@JJ!N(9G@DJ!N!88!!!"TJ*V!!%!!!%!N!3"!!!"!*! +-AB,-!*!&D6HL#`#3$J%!#!#3"eeDe!!!(b3!N!crN!J!+!!$!Gd#I3!$4&0&9!! +!!G3!!Irr!!!!-!'B!!)#!!!"!I3!+!"G@Z!!N!m#!&eDj!"G@VJ!)!!$#3!"!!" +)!!i!N!9G@M!NN!Bi**$j!*!*#!!$!!J!!`!)!!-!#3!#!!N!N!B"!!%"!!%!N!8 +#!*!&$J!B!"J!$J#3$!*V!C)!!3!"!!!!A9SX!&eD+!#3#!0T!*!%(3C!J!#3$3% +!!!!"!!%!!!"G@X!!A9Sd!*!)!fN!!!!3!!N!!!!*!!)!#3!!!!N!!3!!!"S!!Ir +r!!!!$J!!!!%!#3!!!!N!!J!!!!N!!`!!&R)!!3!!"!K$9%&#!!B!#3"G@ZJ!A9V +-!&eD3!"G@Y`!A9V%!&eD1!"G@M`!N2m!N2m!N2m!N1S-3dp-63#3"9eDS!!!!Sa +$5%j,!!N#!!&f!9B!M!#H!+S!!!#b!-J"%J$X!2J"#!#3E$!J"Qj[FQeKE&p`)3! +$#3!'!$!K!!-*!!B!!h*PC$!J"@&XD@GZ-#!6C'PQCQ9bC@jd)'jeE@*PFQPZCb! +J2rc-N!J`)!TcEfeP)'4KG'9c#@jN)(4TE@85G5!e)!Ja-Lmb0bmj-J!`)!acEfe +P)'C[FQeeE'%"3#!$%!!"!!!!!6!J)@%JC'&dC5"KEQ3JFfpYC5"dD@eP*h-JER9 +YBQ9bD@jRF`#3"5!!!fi8!!!!!3!!!!%!!2q3"J!"!*!*%!!$EK$rN!J!!!!-!!0 +Z$!#3"a3!!fjS!!S!N!L!#!!!!"3!!fiF!!S!N!L!L!!!2'3)8)S)#)L%#!J!J!J +)!)!)#!#!#!J!J!J)!)!)#!#!#!!!2%"Ea!#3"BMrr`!)A0i!N!@*rrm!#&hi!*! +&J2rr!!`@&J#3"B(rr`!-&MB!N!@#rrm!$"C@!*!&Jrrr!!`@G3#3"B6rr`!-&TB +!N!@'rrm!$"Df!*!%!I6rr`!)AV)!N!9lrrmJ#'l'!*!&J2rr!!K[@J"Ckp`!J2r +r)!K[FJ"Ckq!!JIrr!!KaH!#3"B,rr`!)FFB!N!A*rrm!#(,8!&RVl!$)rrm!#(, +J!&RVk!#!!!!!$%026%d!N!9G@UJ!!!+-3dK15`!)!J!"T!&q!*3!UJ$!!!!!cJ$ +3!3!"!J!!!1S!N'a`)3!$#3%"!$!K!!-*!3%!"'*[E'3!F#%!!`N!kJ!`)3!$#3$ +U!!9RFQ9PEM!J"'aPCR3!-#(rr`!!!33%E'9QG!#!)#%J2rc-N!L!)$BJ#$%b,c) +h,cNb!%!J$`S1"a!!!4!!!a1!!2rr(`!!!!5!)#SJ2rfCN!J!N!3"i!+!!qJ!!!! +8!!0Z$!!+!*!%!H!#J!#3"43!!fi-!!S!N!3"i!+!!!J!!!!8!!0Z$!!+!*!%!H! +#J!##!!!!&!!$EJ`!#J#3"!(J!S!!N!88!!0Z$!!+!*!%!H!#J!!)!!!!&!!$EJ` +!#J#3"!(J!S!!K`!!!"3!!fi-!!S!!J!2!")!(`#3"$NXrrm!#)-(!*!&L[rr!!L +$%J#3"B[rr`!)Jad!N!@-rrm!#)-S!*!&MIrr!!L$-`#3"Blrr`!)Jci!N!@2rrm +!#)0*!*!&N!$rr`!)Je3!N!@4rrm!#)0I!*!&N[rr!!L$DJ#3"C2rr`!)Jh8!N!@ +8rrm!#)1!!*!&PIrr!!L$L`#3"CErr`!)JjB!N!@Arrm!#)1K!*!&Q2rr!!L$V!# +3"CRrr`!)JlF!N!@Drrm!#)2#!*!&Qrrr!!L$c3#3"C`!!!!-3dp-63#3"9eD5!! +!!Sa$5%j,!!F#!!'L!A`!P!#X!-3!N!A8!3)""!!!!1`!N'a`)3!$#3)"!$!K!!- +*!J%!"QPdB@aTB`&`)3!$#3$%!$!K!!-*!-3!"'*XG@8!-#!'Bf9ZG'9b!$!Krrm +!!!%)"Q0PER4PFJ!L)$rmc*!)0b!)-6)[-MF[16)!3#!2"`i(%!!"%!!$%`!*!!! +I!!!!"B!J,5!rrCQ3#"Ia!!`!!$F)l(J$l4Ih!!`EqJ#3"!2Z!!!fp!!!0[!!!!2 +d'")!$"`p!*!%0Z!B)!!-(*B!N!3$laJQ!!`!!$E-!!!(e2rr!!`G0J#3"DFB-J! +-(AJ!N!3bb"Jh!!`H&J#3"CNB4!!-(RN!@H`X!*JB8!!-(T%!@H`S!*FB@J!-(UN +!@H`N!*BBC`!-(X%!@H`J!*SBFJ!-(YN!@H`F!*XBI!!-([%!@H`B!+SBJ`!-(`N +!@H`8!)XBM!!-(b%!@H`3!)!BP`!-(cN!@Ha3!))BR3!-(h3!@HbB!)FBSJ!-)&J +!@Ha%!)`BV3!-)-i!@Hb!!)dBY`!-)C%!@HaX!)iB`3!-)S`!@HaS!*dBb`!-)i% +!@Ha`!*mBeJ!-)p3!@H`i!+-Bj3!-*-m!@Ha)!+8Bm!!-*9d!N!@V'2i!$#BL!&R +X6!2V'3-!$#Bl!*!%!q`C#3!-*V%!N!3$m4NB!!`Qj3#3"!2k'4i!$#F,!*!&$%0 +26%d!N!9G@X!!!!+-3dK15`!'!J!"V!'+!*3!VJ$)!*!&eJ!!!1)!!!$Z!*"XF#% +!!`N%!3!`)3!$#33"!!PeEQ4PFQaTEQ9`)3!$%J!"!$!K!!-5!!%!#$%iF'pTER4 +c!$!J"A*TCfKd-#(rr`!!!3`&FQPRD(3M)$rmc*!)H5!)-6)[-MF[16)!3#!0&NN +"&)!!rrf!!2rr(`!!!!S!N!3,ZIrr)!M&6J#3"B)!!$48b13!N!@%rrmJ#-PS!*! +&K3!!0$c*l!#3"BErrb!)bR!!N!3(d[rr)!M+p!#3"!I6rrmJ#-Yi!*!%0"$rrb! +)br`!N!3(eIrr)!J!!$2m!!!(e[rr)!M0"!#3"!IA!!!ck-f)!*!%"pMrr`!)cJ` +!N!3ce2rr)!M1N!!!N!3$k[rr)!J!!$2!!!!$krrr)!M2Q!#3"!2XrrmJ#0!F!*! +%!qhrrb!)d+!!N!3$l[rr)!M4*!#3"!2[rrmJ#0'S!*!%!r$rrb!)dL`!N!3$m[r +r)!M5X!#3"!2crrmJ#0-d!*!%!r6rrb!)dlJ!N!3$p[rr)!M82!#3"!4ArrmJ#06 +!!*!%#lMrrb!)e83!N!3,ZIrr)!M9b!#3"B$rr`!)eN`!N!@"rrm!#0G3!*!&J[r +r!!MB9!#3"B2rr`!)f9J!N!@+rrm!#0TF!*!&K2rr!!J!!!!-3dp-63#3"9eD6!! +!!Sa$5%j,!!)#!!(N!Fi!!!#@!*!(TJ#3G)!JJ#%!&J!!!3!`)3!@!!!"!!GMEh9 +bD@9b*#!rr-b3##SJ2rfCN!K[G'8J8'&N!*!%&3!!8Q9MC@jd)%&`F'aTBf&dD@p +ZF`#3"")!!&*PBf9ZG#"%Ef0eE@9ZG(-!N!33!!"5C@-!!#c%8f9bGQ9bF`#3"!X +!!&0M!!!XX'p[D`#3"!S!!&0dD@0VD3!!,*`!!!d!!+8J8fKeG#"%EhGZ!!!XL!! ++!*!&(!!$EQ`!'!#3"#ad!!S!N!3"i!+!)!`!!!!8!!!XB!!"!*%!%`$5!&eCh!! +!!$`!!fj%!#`@V)"%!!$rr`!5!%%!!3#3"dJ!!!")!*!&#!!"!!J!N!BI%!#3"!4 +C!!!!$!!$ERJ!F`%a!!!!$!!$EPJ!!!!m!!!!&!!$EQ`!!2rr!!!!"!!!!!%!!!! +8!!0Z4!!+!*!%!H!#J!!"!!!!&!!$EN3!#J#3"!(J!S!##!!!!"3!!fji!!U!!B! +"Irprr`#3"!%)!!0Z4!!"J!'!!ArrIrm!N!88!!0ZH!!+J!'!!ArrIrm!N!88!!0 +ZH!!+J!'!!ArrIrm!N!88!!0ZH!!+!!)!$`!5!"m!N!3VA!#3)`a$6da0!*!&A9V +)!!!#M%0)6NX!!3)!!I3"k!#3#i`!N(3N3$rmc*!),5!rrCQ3#!#3%a3!!fh`4'& +bFh4PE'aeEQF!N!3-!!0YY!!AG!!!!!)S!!0YK!"`!*3!F!(X!(%!P!"a!H`!M!# +D!)`!iJ#-!5d!M!(Q!*`!iJ#F!1i!V!$U!+`!lJ#m!1S![!%4!-`!kJ$-!4%!h!# +D!0`!kJ$F!5d!h!(Q!13!QJ$N!3N!p!%*!23"$3$p!5d!r3'!!2d"K!$p!HN""!# +D!33"$3%G!5d"(3'!!4d"K!%G!HN"0J&-!6B"PJ%f!Dm"0J(P!6F"5J%h!8`"0`' +@!6F"Q!%h!Dd"0`'[!6F"j3%h!HF"13&*!6N"5J%j!CJ"13'C!6N"V!%j!Dd"13( +R!6N"k!&(!8N"4`&+!8F"Q!&(!CN"4`'X!8F"V3&(!HF"4`(S!8N"5J&*!8`"53' +@!8N"Q!&*!Dd"53'[!8N"j3&*!HF"5J&-!8S"PJ&+!Dm"5J(P!*#,$%026%d!N!9 +G@M3!!!+-3dK15`!#!J!"jJ(Q!)`!N!QD!*"d-#!+BQPR)'0[E(9YEJ!Ni$rmc*! +)"!`'M#!-9K-!N!3%$3DB)!a@P`#3"!31"U-J$&FE!*!%"!m'X#!-9jm!N!3%%!D +m)!aB)`#3"!34"XSJ$&LR!*!%"")'eL!-@5X!N!3%%`EJ)!aCV`#3"!38"ZFJ$&S +c!*!%""8'mb!-@VF!N!3%&JF")!aE1`#3"!3A"`XJ$&Zr!*!%""J(&L!-A%-!N!3 +%'3FM)!aFa`#3"!3D"bmJ$&e,!*!%""X(2b!-AFm!N!3%(!G2)!aH8`#3"!3G"e` +J$&lA!*!%""i(D5!-AeX!N!3%(`Gc)!aIh`#3"!3J"i!J$'"M!*!%"#%(ML!-B1F +!N!3%)JHF)!aKD`#3"!3M"kNJ$'([!*!%"#3(Vb!-BR-!N!3%*3Hh)!aLp`#3"!3 +Q"m%J$'0l!*!%"#F(cb!-Brm!N!3%+!IC)!aNJ`#3"!3T"q!J$'8(!*!%"#S(k5! +-CBX!N!3%+`Ia)!aQ$`#3"!3X"rXJ$'D6!*!%"#d)#L!-CaF!N!3%,JJC)!aRQ`# +3"!3[##-J$'JI!*!%"$!),b!-D+-!N!3%-3Jk)!aT*`#3"!3b#%3J$'QV!*!%"$- +)6#!-DLm!N!3%0!K6)!`!!!!3!!(rr`!!!!3!!!!"!!%!(3#3$a3!![rr!!!!"!! +!!!%#J!#3"3J!!!!8!!,rr`!!!!3!!!!"!CF!N!8E4&0&9!!!!&3!!2rr!!!!+!" +)!!%!!!!#!!!!)`!!!#m`)Arrrrprrrrr!&eD*!#3&3%!!3#3"3'#(J#3"9eD)!" +G@K`"D!!!!$B!!Irr!!!!+J!!!!)!N"%"!!%!N!D#(J#3$!&S!!!!%!!#rrm!!!! +#!!!!!3*SrqJ!!!!3!!,rr`!!!!)!!!!"!BRrmJ#3"%C19%d!!!#F!!,rr`!!!%J +!!!!"!!-!!`#3"!C(C@jPGQ%!N$S@!"B!N!3(3fpeFQPPFJ#31%099&-!N!4%8e9 +0!!!!*J#3$`i08'9bCQpbE@%J9A0PFJ#3#%K%6NN!!!!'!!"&9%*-!!!!1%C19%d +!!"dL3e988`!!(FC%8e90!!!GcNK%6NN!!"hm494#6!!!(JErr[hmqrVjq2$am[2 +dpIEh4jB!!!%!!!!"%!!!!"!!!!!b!!!!%!!"rrm!!!!%!!!!!3!"!"d!N!`*FfK +PCA3ZBhGV!J!#!%0A8e0#6d*2!3$rN!3!N!3#!%0A8e0#6d*2!3$rN!3!N",2X8B +L!!!H4J!!!8)!,c!KIrrrrhrrrrm!A9SN!*!9!3!"!*!&!B)H!*!&A9SJ!&eD(!& +S!!!!0J!"rrm!!!!U!!!!!J#3%3%!!3#3"S)H!*!-!@J!!!!3!!,rr`#3"3`,3fa +KFQPc9fpbDh-!!!%!!!!"%!!!!"!!!!!b!&eEi"Mk!!!!(!!b!!"69&)J!!!!#Vr +drrm!N!9G@CJiC3: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_4.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_4.0.hqx new file mode 100644 index 000000000..0b5da872f --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_4.0.hqx @@ -0,0 +1,160 @@ +(This file must be converted with BinHex 4.0) +:$(0SC@9d,Q0hDbjf0!"$9e063Np#6`%!!!!U-!!!!D,$jJ3!R!"#6d*2!!%!@"0 +8!*!%!aJ#C!!N!#3!*!!N!#3!*!,d!N!"!!!"!*!5!3!!!J!"!!!!@"B3!*!("`! +"!!!!!3!"!!)!(&La!!S!!!!"!!!!!3"B&K!!N!3$!`#3$9d!N'pG!*!(@"A%!!! +!@"0J!J,rr`!!!!8!!!(r!3!"!!!#!!)!N!S"!!!"!!%!,3!!!3!"!*!%@J!!!") +!N!8'!3#3"!%!!3#3'3i08'9bCQpbE@%J9A0PFJ#3$hJ!$`!!!%J!5!#3"!,`!N$ +rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3!#!!!!!5F +2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!*!,(!!!rrm!!!!%!"!!!3!&!!! +"!!%"!!!"!*!+@"T`!J#3"!%!#!#3#[rr!*!%rrm!!3!"!!!!!3#3#`%!L3#3&5N +!!!(e!*!&!3!"!&)#D`#3"43"TJ#3(9J9d!#3#9J9Q!#3G9J5a!#3"43!!!'Q!QX +!!3!!!3#3"!%!!!%!N!aB1p!!N!9T*e),!*!1!3!)!*!(@"-S!!!I*!#3$2q3#!! +S!!-"h3*p!!0%8d98!!!"e!!"rrm!!!!`!CJ!!J)!!!%"p!!S!&J6$!#3$`)!@"A +8!&J9b!!)!!!!5!!1!*!*@"2!**!'1#53q3#3#3J!!!!)!!!!#!!!!!N!!J!*!*! +'!3!"!3!"!*!&!J#3"3i!'!!B!!i!N!`#D`'5!!%!!3!!!&J9l!"B%dJ!N!J$D3# +3""d'3)!!N!d"!!!!!3!"!!!!A9V!!&eD0!#3#!0T!!!!%!!*!!!!#3!#!!N!!!! +*!!%!!!!D!!(rr`!!!!i!!!!"!!N!!!!*!!)!!!!*!!-!!"Cb!!%!!!3)3e4"3J! +'!!N!@"-)!&J9Z!"B&D`!@"@N!&J61!"B%V`!@",!!*$r!*$r!*$r!*$U$%026%d +!N!9B&D!!!!+-3dK15`!*!J!"AJ%&!)`!QJ#N!!!!X!$+!9F"D3%%!5F!N'd-!`! +!#3CZEh*YB@aI!!J$!!!+!h*PC!!+!`!!#39KE'PREJ!B!`!!#40ND@CQCA*PER3 +JER9YBQ9bD@jR!!i#!!!*2rc-N!J!$J0S!!N*FfpYC5"NBA4P)'&ZC#"dD@eP%J! +1!`!!#`Ja-Lmb0bmj-J!!%J-!!!N-FfpYC5"QEh*YG@aK!3!0"!!!#3!"!a!!!3# +3"!i%ZJ!*!!!%%!!#(`!!!J!%"`!!#!!B!e`!#"0cEfeP)(4TE@8JER9YBQ9bD@j +R!"!$!!!*#R0[E@8JC'&dCA-!!"`$!!!)&R0[E@8JG'PYC5Gc)'jeE@*PFQPZCh- +!,'jeE@*PFPp[CPpND@GTG(0%!e*29`4MC@aXf`C648026N30Ff9bD@&XAfjeE@* +PFN8%8dP(6JCZG@eLCA*'!e0*6JCZG@eLCA*H"&048P3'ER9YBQ9b4`969%4&9K0 +ZG@eLCA)a,'jeE@*PFM)X,LiZ5!0698d6ER9YBQ9b-5aZG@eLCA)b,#iZ,NN$9%& +1"QjeE@*PFNS+9%9B9&424%&843PNBA4PAh4PH(33#94&@&486dj9634dCAKd6!T +849K89%p858e&#A4TE@9IG'9iG%m%9%P044*SEh9b,'eTER9dC5acC@0[EQ40#P4 +*68986e4&@&3EFf9bD@&XAfjeE@*P!!!!$%026%d!N!9B&E3!!!+-3dK15`!)!J! +"P!&M!)`!Q!#N!!!!X!#f!4-")`!!!2F!N'd+!`!!$!4LEfaN!!!+!`!!$39RFQ9 +PEJ!+!`!!$J4XC@Cd!!!%#!!!#3!1!J!!$crmc*!)!!3(k!!*!!i$D!!9#$%b,c) +h,cBh$J!C"!!!#3!"$`S1"a!!!4!!!a1!!2rr(`#3""S%!!!*!!!2#Ji(%!!"%!! +$%i!!rrmI!!!#!!!1!`!!#`Ja-Lmb0bmj-J!!"!J%!!KKEQGP,'PZC'9ie3GA489 +,4%&C$A0PFQPKE&pZG@eLCA*@#PG&48Y24PP&39)0Ff9bD@&XAfjeE@*PFPF%@89 +"8JecCA*TB@aIER9YBQ9b@!`pE3!!#S!pEJ!-rriJEHjX-#lrr%M!jBJJ8#"`#!` +S8%T8CJ4`!'!`)'hZE$!Zrra)`1@))&!JF!J--$`"MX(ZrriJ8#*Z!!K"m!K-F') +Lf&()rr`bf(!"+&p1ANje6PErq%MR!4JSEJ!)I[r1,!!&2c`!!dkY$Y)J3#CS!!J +),!!!!!j8MfGm$!F!-@9f$!F!1@*`3Ulrq(!!%!F'32r228$rq#"6-#lrq,"S!%a +X8N+Zrra#*amm!!&)E[rm,`Xr2!!mUHG#&bmZrr`[#cmm!&bTjamm!!%[,[ri,`X +r2!"FUHF[#cmm!"#Tjb"Z!!``[!!$F2ml3,XJ1d#l(R!"B!4#9(!!60mBJ%jH6R9 +19[rb!!!!$%026%d!N!9B&J`!!!+-3dK15`!(!J!"M!&K!)`!QJ#Q!*!&Y!%,!4X +!!!$[!*"Y$!-!!"%'DA4KE'PM!3!+!`!!%J4LE(9P!!!-!`!!%`CMC@jdCA)!!!i +#!!!82rc-N!J!$!-&!!X'-Lma,c!dHM)!!"N%!!!*!!%2"`i(%!!"%!!$%`!*!!! +I!*!%'J3!!!N!!!m($JF3!!%3!!-6!!N!!"m!!!B!!!i$D!!3#$%b,c)h,cBh$J! +1!J!!!6rpQC!)!'!!"AB[2!(D!!%r2!'16UdABLe!r'jFMfFX,c`"fJ!"2c`"MNk +Y&f)Y32afA)pR&Lmm!GS!!6mm!Bj1V4GL,8$mFPb2CJC`!'!!"5iJE[aZ)&!4I!! +"!!`JE[aZ)&!4I!!"!!dJE[af)&!4I!!"!!`JE[af)&!4I!!#!!dJE[ab)&!4I!! +"!!`JE[ab)&!4I!!$!!e)E[aZ,bhZE%kY&fT53Cb4)E[af,bhZE%kY&fT53&# +2Ca*)E[ab,bhZE%kY&fT53CJC`!'!!"+T)H!"X5'lrP%kY#2T)E[f!,c`!#c, +06Ud5iNKZrAT1V42#,#lpI$eZrAVrUN(Zr(SY52qQHJ"2l`!-B!!"5K!e85$ZCNR +!28$q#%KZr(Sr2$,0F"h3E[i)2`"1V4,L3QFr,[qU,`C)E[ak5'lpHM!m!!'U8NK +ZrAT1V3K55J"FMfBD3QFr,[h!,blp`NKZr(S!!!!-3dp-63#3"9J9R!!!!Sa$5%j +,!!F#!!'-!@-!M!#F!+`!N!@i!3X"'3!!!2%!N'd1!`!!&JPeEQ4PFQaTEQ8!$J- +!!"F)-6K`EfPZG(-!!!S$!!!B"A*TCfKd!!i#!!!C2rc-N!J!$!0)!"S(05mb-bm +f0c)!!"F%!!!*!!%0&NN"&)!!rrf!!2rr(`#3""J%!!!*!!!0&NN"&)!!rrf!!2r +r(`!!#J!!$!-&!!X'-Lma,c!dHJ!1!J!!'MrpQC!)"!`S!!%!"'C+)'fl!#*YZ`3 +`+!!FX'N"%'miF"M3VEX!+%!JEEX!)Qfl"$iT!4#HD!!FhP3-4`!%E!*q"$"()!L +"r!!#-K553$"")Qfl"#0)!'C-ha#!6R919[ri51F"'#CZ!!SSEJ!1$'i!"3!)CJC +`!'!!!,SJD`$d)&!SU!!3+@J!&!!%-#i!#'F1DdKA3'F`DN*53'SHB"3[$$mV!"! +r+`!1U+N'E!!b!!CJ+!CX!#m!"'!J++h*+#PYb5`!"'!8,``r+`!32bX!$ULT-#f +rq0&X!!Cq"GjYZ4,IE!!'hf`!"%KZrrK1V39D2Lfbl0jYXXT)air!5%FZM(!$N!" +X!!)b"qG*d%%r!(!$N!"8FJc$ap"i#kS'3!!4d%%r!+LS3LF[$%KZrrJ[$+LUF!& +-lKL!rqa1ANje6PEr!#m-5'lr!#"YXVJJD!#',a"1V4E53KG1V3$U5J"3MfB'F!" +J!!#i!!!!$%026%d!N!9B%c`!!!+-3dK15`!$!J!"e!(%!!!!M!#3"jS!ZJ#3F`` +$!!!E"f0[GA*TCA)!$J)!!"`rr-b3#!!1!J!!!6rpQC!)!!`$5!!9"c8[-M-[0MF +!$J-!!"S)-6)[-MF[16)!!"F%!!!*!!!0&NN"&)!!rrf!!2rr(`!!!&!KM!Mm8Qf +bbR!(`'X!-Pe!8)pQ%N*R6Ud#'NS!9)pQ"J*VrrJ!-L!-60mFi%jH6R9)j`%))'f +l"!`S!!%!"'C+)'fl!#*YZ`3`+!!FX'N"%'miF"M3VEX!+%!JEEX!)Qfl"$iT!4# +HD!!FhP3-4`!%E!*q"$"()!L"r!!#-K553$"")Qfl"#0)!'C-ha#!6R919[ri51F +"'#CZ!!SSEJ!1$'i!"3!)CJC`!'!!!,SJD`$d)&!SU!!3+@J!&!!%-#i!#'F1DdK +A3'F`DN*53'SHB"3[$$mV!"!r+`!1U+N'E!!b!!CJ+!CX!#m!"'!J++h*+#PYb5` +!"'!8,``r+`!32bX!$ULT-#frq0&X!!Cq"GjYZ4,IE!!'hf`!"%KZrrK1V39D2Lf +bl0jYXXT)air!5%FZM(!$N!"X!!)b"qG*d%%r!(!$N!"8FJc$ap"i#kS'3!!4d%% +r!+LS3LF[$%KZrrJ[$+LUF!&-lKL!rqa1ANje6PEr!#m-5'lr!#"YXVJJD!#',a" +1V4E53KG1V3$U5J"3MfB'F!"J!!#i!!!!$%026%d!N!9B%R!!!!+-3dK15`!"!J! +"m!(J!*!,M!#3G3i#!!!H2rc-N!J!$J)!!"mrrCQ3##m-2bX!%$mV!!kSU6!Y[rM +4E!!'IJAHEEN5hf`!"YpX!!4)E[ri6Ud&@MiYXZcHEE,+5-H2`%K(,Sa`!j!!E!! +#-JIR5G""2`"`!j!!9()-`mI3H!ZU"N!!%G""2`#SU%)R,`a)E[ri,`bSUR!"61i +BJ2rX6Pj1G8j@r`![$%KZr`!JEE+i)'J!KLm36Ud@dN)A6Ud!kNS!8)pQ"R!!B!! +!Z!!,1f``+!!b!N!-!!a!$!"Q#NKi!#"1V8E+@)p1V3`D2bi!%#mZ!!`[,J!),bf +l!%KZr`"1Z[P%+%!J$%r[!"*Q"(!!B(!JEEX%!QMcr`!b+dbc1Lm-6Ud&%L"YZ`" +#+!"25Ui!$&L2C`T#*dkY!`T8Mf!%6Ud*kL"YZ`!4I!!"!%p1V3BU,`a1V3B+(V` +!!8kY!i*+,EN3@)pR'%)R,bfbZ%kY"1SH[!!",`a1V36U6qm!#L!-+&p1ANje6PE +qANMR(aKm!(B!3QhZFMmm!qK1V3lD2J"+4e52C`!$&M!(8N!-3!!)BJ!#mN2k!`l +5m3)!6Y%r2!!%6Ud$`Lmm!!%!"$mm!qj1V3lb+%!`EFLm)!MTL$Zm!!3*)-Kd,Sa +1ZJEb6VS&M#C!,SY1ZJAX3UhZG%KY2GSr2!!'6Ud2DKYm!!!!$%026%d!N!9B&DJ +!!!+-3dK15`!#!J!"hJ(H!)`!N!QH!*"e%!-!!!N+BQPR)'0[E(9YEJ!!$J)!!#! +rr-b3#"YZrQAZF(!!%#hZF&"!2`"1V3Hb3KG`!"!YlR!r!%kklfaBMf!!!2*+!eI +$4!0+!fF`2c`!"%kY$`)l3-Lq)'hZE#"3$&!!!952Bbi[,E,F2c`!"+JS,bfbh$m +m!!@S+'!B3Qh)[LmYXY`r2!!%U#F[,E,F2c`!"DJR$'d!!FLqCJBlI!!#b,i-E3! +#b,j["&0Yb,i`,HjbX'h)[QGL1fh)[Zjb3LF[#cmm!#bTjbm,6VS$M"km!!%[#cm +m!#bTjakm!!%[#cmm!#bTjb"YbC`[+!!B,`Xr2!"NUHFJ8dTS!%aR!2i`I!"#V[j +H(c`!!5mZrPi[#cmm!&bTjf!!rKC#V[jH)&-I+!"02c`!!8kY%+TBMf!!r0a-haM +i6Pj1GIckrq$q-2imrDcr@[rJrq$r#%j@rr`[$!aY!!,ZFQmN)'hZE$!YlR*)`1@ +))&!JF!J--#i!$%M!jBJJ8#e`#%crr'!-2@hZF[rm2@i!$2rq)'hZE$!Zrra)`1@ +))&!JF!J-+&"+9'B%F!"J-#"YlQ``,[rm5-$PL#"3)(!)$$!m!Bl"l[rq)&!LEJ! +)3I!)6("L)YK4b2rm-YK`!5KI6Pj1G8j@rrK)j`%B+'i!#(lrcL`!"6mm!!01V3l +5)%!!!!!3!!(rr`!!!!3!!!!"!!%!(3#3%a3!![rr!!!!"!!!!!%#J!#3"3J!!!! +8!!,rr`!!!!3!!!!"!CF!N!8E4&0&9!!!!&3!!2rr!!!!,J")!!%!!!!#!!!!)`! +!!#m`)Arrrrprrrrr!&J9h!#3&3%!!3#3"3'#(J#3"9J6Z!"B%j`"D!!!!$B!!Ir +r!!!!+J!!!!)!N"%"!!%!N!D#(J#3$!&S!!!!%!!#rrm!!!!#!!!!!3*SrqJ!!!! +3!!,rr`!!!!)!!!!"!BRrmJ#3"%C19%d!N!4$9946!*!%4&0963!!!#B!N!m1$9" +PFQC[FQeK)&9cCA)!N!K)4%j*!!!!"J!!8e4C6!!!!l!!(rrr!!!!(!"!!!&69&P +-!&J5Z!)"!&J6M!#3"9J5Q!"B%[!!@",i!&J6T!"B%mJ!@"1%!*!)!E8!!2q3"!! +!!!B!#2rr!!!!,`#3"!3+!!(rN!3!N!Vrr`!!!#J!!3!#"!)!!2rr!!!!!J!"!!% +!!3!"rrm!!!!"!!)!!`3+!!(rr`!!!!-!!3!"!!)!![rr!!!!!3!$!!3%#J!"rrm +!!!!"!!%!!3!"!!2rr`!!!!%!"!!&"!S!!Irr!!!!"!!"!!%!!J!%rrm!!!!"!!8 +!"J!"!!$rr`!!!!8!!3!"!!(rN!3!!!!"!!B!"`3*!!(rr`!!!!%!!3!#!!(rN!3 +!!!!Q!!F!#!3"!!$rr`!#!!B!!3!"!!(rr`!(!!!!$!!)!!N%!3!!rrm!#!!(!!% +!!3!"rj!%!!!!!3!*!!S%!3!!rrm!#!!)!!%!!3!"rj!%!!!!!3!+!!`%!3!!rrm +!#!!*!!%!!3!"rj!%!!!!!3!,!!d%!3!!rrm!#!!+!!%!!3!"rj!%!!!!!3!-!!i +%!3!!rrm!#!!(!!-!!3!"rj!%!!!!!3!0!!m%!3!!rrm!#!!(!!3!!3!"rj!%!!! +!!3!1!"%%!3!!rrm!#!!,!!%!!3!"rj!%!!!!!3!2!")%!3!!rrm!#!!-!!%!!3! +"rj!%!!!!!3!3!"-%!3!!rrm!#!!(!!B!!3!"rj!%!!!!!3!4!"3%!3!!rrm!#!! +(!!F!!3!"rj!%!!!!!3!5!"B%!3!!rrm!#!!0!!%!!3!"rj!%!!!!!3!6!"F%!3! +!rrm!#!!1!!%!!3!"rj!%!!!!!3!8!"J%!3!!rrm!#!!(!!N!!3!"rj!%!!!!!3! +9!"N%!3!!rrm!#!!(!!S!!3!"rj!%!!!!!3!@!"X%!3!!rrm!#!!2!!%!!3!"rj! +%!!!!!3!A!"`%!3!!rrm!#!!(!!`!!3!"rj!%!!!!!3!B!"i%!3!!rrm!#!!(!!i +!!3!"rj!%!!!!!3!C!#!%!3!!rrm!#!!(!"!!!3!"rj!%!!!!!J!D!!X%!3!!rrm +!#!!(!!)!!3!"rj!%!!!!!3!E!"!%!3!!rrm!#!!(!!J!!3!"rj!%!!!!!3!F!"8 +%!3!!rrm!#!!(!!X!!3!"rj!%!!!!!3!G!!%%!3!!rrm!#!!(!!8!!3!"rj!%!!! +!!3!H!"S%!3!!rrm!#!!(!!d!!3!"rrm!!!$%!"lrr`!!!!B!"!!"5%&65*!!4A1 +9!!'Pb,(+!!#fdV21!!6!dV2$!!,)eIh1!!-!&b9i!!B""bB(!!J""bB+!!S""bB +,!!i""bB0!")""bB3!"-""bX(!!N""qN(!!m"#!m(!!X"##B+!!8"#5B(!"B"#bF +$!!`"#bJ$!"!"#bN$!"3###B'!!d$##B'!"%%##B'!"8&##B'!"F&$#B%!"J&&LB +%!"N'##B(!"S)##B(!"X+##B(!"`-##B(!"d1##B(!"i!!!&@!"$rr`!!!"3!#J! +#3dK"8J"B%[3!F2rr!!!!!3!"rrm!N!J-!3#3"3)!N!8"rrm!N!3-!Irr!!!!!3! +!!!8!!Irk!!%!!!`"rrm!!!!"!!!!&J!"rqX!!!!"$J(rr`!!!!%!!!!L!!(rh`! +!!!)-!Irr!!!!!3!!!!%!!Irq!!)!!!`"rrm!!!!"!!!!"!!"rrX!!3!!#3%!"J! +!!!m!N!8"rrm!!3!!#3(rr`!!!!%!!!!)!!(rp`!"!!!*"J!#!!!!!3!!!")!!Ir +[!!%!!3N"rrm!!!!"!!!!#!!"rrF!!3!!#HVrr`!!!!%!!!!L!!(rh`!"!!)*!Ir +r!!!!!3!!!!J!!Irh!!%!!!R%rrm!!!!"!!!!3J!"rlm!!3!%#3(rr`!!!!%!!!! +%!!(rq`!"!!!5!Irr!!!!!3!!!!%!!Irq!!-!!!N"!!!!AJ!0rrm!!!!'!!3!!8K +"8dJ!!J%,!!%!!J%2!!3!!J%3!!-!!`%)!!F!!`%,!!N!!`%-!!X!!`%1!!d!!`% +4!!i!!`B)!!J!!m3)!!`!!qS)!!S!"!%,!!8!"3%)!!m!!!&U!"%!$`!"!"3!#J! +#3d9-6!"B%k`!!2rr!!!!!4rr!!!!!J#3#2rr!!!!%!!!(rm!!J#3#2rr!!!!!3! +"(rm&!J#3#2rr!!!!!3!%(rX!!J%!N!Irr`!!!!%!!4rq!3)!N!Mrr`!!!!%!!4r +r#`)!N!Mrr`!!!!%!""rl!!)#!*!(rrm!!!!"!!%IrJ)#!*!)rrm!!!!"!!%Ir`F +#!*!)rrm!!!!"!!3Iq`!#!`#3"rrr!!!!!3!"(ri$!J#3#2rr!!!!!3!"(rm*!J# +3#2rr!!!!!3!"(ri%!J#3#2rr!!!!!3!"(rm0!J#3#2rr!!!!!3!$(r`%"!#3#2q +3"J!"(ri0!J#3#2rr!!!!!3!$(r`%$J#3#h!!%2rr!!!!"J!%!!&)390)!!)Ir`! +"!!BJq`!$!!BKq`!'!!BLq`!*!3-IrJ!%!J-IrJ!(!`-IrJ!+"!-IrJ!-"!FIr!! +1""%Ir!!3"3-Ir`!#"`-Ir`!)#3-Ir`!,#`-Ir`!&$3-Ir`!0)!%!N!GH!!2rr`! +!!"J!#J!#4e*35!"B%l3!!2rr!!!!!3(r!!!"!!%!!!)!!J#3"[rr!!!!(3!!!Im +"!!%!!!)!!J#3"[rr!!!!!3!4!@i!!!%!!!)!!3#3#5)!!rrr!!!!"J!%!!&)390 +)!"-#E`!#!3)$!3!"!`%"!J#3"!&D!!2rr`!!!'`!#J!#8P9-8J"B%l`!#[rr!!! +!!3(r!*"Nrrm!!!!F!!!"r`#3B[rr!!!!!J!#!Id!N!4!!*"J)J!$rrm!!!!'!!3 +!!8K"8dJ!!!(r!!%"r`#3"%!#!Id!!J!!!&)!)3!G!!)!!J!%!!*-5e93!!!!(3! +"!!)!!`!%!!8!"J!(!!J!#3!D!!S!#`!-!!d!'`!1!!m!%!!4!"`!%J!6!"3!&3! +H!"B!&`!I!"Mrr`!C!!!!a!!&rrm!!!!N!!3!!Nj"688!!!6)XFUK!*!H!JV)XFU +KbY6,il(Y!*!B!`65Xm1m!*!H"!69rFl%!*!H"365Xmkb!*!V!5!!"2rr!!!!4!! +%!!*'6P40!!!!!JG$D'PMB@G[!*!j!`!#"NGPEQ9fB3#31K8!!JP)C@afCA4TBf% +!N$F@!!)(3fpeFQPPFJ#31%983N`!!!"!4Nj863!!(5K$9946!!!G-%4698d!!"d +i5%4153!!(@C69&P-!!!GF%983N`!!#RSrrlpr2[kqIM`mI,cp2AfpaM+!!!"!!! +!!8J!!!")!!!!@J#3'3)+b,(+SFS-FfKPCA3ZBhGV,RBd0!)!!J"$9e063Np#6`% +!rj!%!J"$9e063Np#6`%!rj!%!*!5cl&)Q`!!+M!!!!'L!*!A"365Xmkb!*!V!5! +!"2rr!!!!4!!%!!*'6P40!!!!!JG$D'PMB@G[!*!I$P"PFQC[FQeK)&9cCA)!N!3 +Lcl(NU`!!!&JFI!2S!!(2XH5V3A9dD&4&@&3$kJ!d!*!($!Y$E'&bDA0AEh*VF`! +!!3!!!!&)!!!!5!!!!&S!@"53!"E'!!!!(!"D!!*849K8!!!!'R"ZEh3!!!!Q8e4 +5)!!!!$)$k[rr!*!+rrm!!!!5!&J66,rdrrm!!!!i!&J8(&&1: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_5.0.cwk b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_5.0.cwk new file mode 100644 index 000000000..66afd8b10 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_5.0.cwk differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_6.0.cwk b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_6.0.cwk new file mode 100644 index 000000000..8c47d62b8 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_6.0.cwk differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB.cwk b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB.cwk new file mode 100644 index 000000000..3bcf74cbb Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB.cwk differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_2.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_2.0.hqx new file mode 100644 index 000000000..aff66204b --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_2.0.hqx @@ -0,0 +1,95 @@ +(This file must be converted with BinHex 4.0) +:#@4KG'%ZBhGV-J"$9d4#3Np#6`#3""Ti!*!%H!8"!%J!3Np#6`!"!"e$i!#3"!- +B!Q3!$`!5!"N!%J!2!")#r`*5!3!!!3#3%J%!!J)!!!!G3p!!N!F"!!%!!!")!!! +!%!!!!!%!!!!"!"e$d!#3"!%"!!%!N!N1!"e$a!#3Ba8!!!`"!*!0(82-!`-!N!8 +9!!!-!3!!!!%#!J!!!3#3"3%!!!%!!3!Y!!!!a!!#rrm!!!"F!!!!!J!$!*"E"!# +3AAJ!$`!!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!! +"!3!!C!!"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!"f +'4!0@!!!!!3!-!*!+rrm!N!6rr`!"!!%!!!!"!*!&!3!-!!!!!3%K!!!'ZNKZr[` +[2!!4!)Y1V3fU!!!#3!!!!SJ!N!8"!!%!8J*V,S&)EJ!!!DB0JNKZ!*!%r[a1V3U ++(V`!!!$Lr[`r2!!)6Ud!(8*B!*!*(8*3!*!)B!!!T%KZr[`r2!!)6Ud'bNSZr[a +FMfF!!)i-,J!Ir[aM"Kem!"rqr%kY"NT#Td*R6Ud'#RVpfNB`"9b2Cb*V)&9!C`4 +U'Q!)!*!%5J"RCMmm!!*1ZJ#3"#!-9)pR9Lm-5'i!N!NG3542l`!+!!!!-J'Q!QX +!!3!!!3#3"!%!!!%!N!3D!,"J*%kY!"e(`!#3"5K$kJJ(!*!%,c`I4NkY"N)q!3! +)!*!%60m!(8*F!!!I*!!S!!-"h3*p!!K%8d98!!!!L!!"rrm!!!!N!&J!!J-!!!% +!(82!!"e$k!!!!"e#e!#3"4e#R!!G3Y!!#3!G3TJ!"`!G3ZJ!N!8"!*!($!)j!DB +!N!8G3Q!!N!8"!!)!!`#3"d$JRJ!!!!`!N!NG3Q!!N!8"!!!!!3#3#-#H!!!"j!! +%rrm!!!"f!!!!!34ZB@eP1`!S(k`!+#,)J"8!"NPH!3!"!!%!!3!!+#-I!!J!!@q +5!#JLRJ!!!MX!(823rrm"9J!2je3!+#-H!*!)!6F!N!3J(@'%)!K!J!!R!*!J"Qj +eE@*PFLJIV!!S)XL!&3!'59i"!!%!!3!"!!!S)am!#!!"Ej)!+#+H!!!#1`!G3p$ +rr`&@!!rR9!!S)ai!!!%!N!8"0`#3"#!GBB3J#%#!!#F!N#!%C'&dC@9b+"qX!#J +Lb)!9!!C*AJ%!!3!"!!%!!#JM(`!)!!&[NJ!S)Ti!!!)l!"e$d2rr!9B!$qG8!#J +M(J!!!J#3"3%h!*!%)"eKK#!)3)!!*`#3)!4dD@ePCA)S(k`!+#,)J"8!"NPH!3! +"!!%!!3!!+#-I!!J!!@q5!#JLRJ!!!MX!(823rrm"9J!2je3!+#-H!!!$!*!&!6F +!N!3J(@'%)!K!J!!R!*!M$!!!rrm!!!!#!!!!!3!!!!`!!2rr!!!!!J!!!!%!!!k +5!!%!!!3)3e4"3J!$!!J!(8&m!"e"a!!G3N3!(8'!!*$r!*$r!*$r!*$f$%026%d +!N!8G3B3!!!+-3dK15`!)!J!"*!%N!)`!!!#5!*J!RJ$+!3B"(J&'!*"["(4[G'm +!"(4eG(8!"(4TG'N!+LJJBfpZG'&TER-J0#"QD@9XC(-JEQ&YC5pZG@eLCA)[C'& +dC5pdD@eP+3!k+#"TEL"QD@9XC#!a1L"dEh4[,(4eG(8XG'PdD5!V)(4SCA0P)'C +TGQ8JBfpYE@9ZG(29)'aTEQ9c+3!9+#"TEL"QD@9XC#!b1L!c,$3X05!T!!!Q+#" +TEL"QD@9XC#!c1L!a,c%[0#`J-5mc-5m`0#`J-6)[-5mi15N!(bJJD@iJCQPPE'3 +J0$SJ-cS`-#`J0$S`-#`J06S`-#QSTP%!(6Ym!)rrr`3)Tc8!(6Yi!*!!rrm%#+I +%!"dlG!#4rrm%#+Lh!"dlF!#5rrm%#+Np!"dlE!#6rrm%#+RE!"dlD!#9rrm%#+V +$!"dlC!#!rrm%#,%d!"dlB2q3"!!)UeF!N!Err`!)UhB!N!6qFS)!!,3!!!"`!)% +!N3$`!"e$X2rrYZm%4QPXC341CAI*!%i!!!92F'9Zb3"2!!!(5@jcCA*db3#3"!% +Y!*!%"80XEh0P!&F!!!46BACP!&-!!!K6BACP)%&cb3"6!)!",3#3"!C0B@0bEh- +!'i3!#deKD@`J6@9bCfA*!%d!J!%Y!*!%#e"KCf8J8f9dGA$*!*!%"P"bD@jdb3" +3!!!",3#3"!44G@Pd!&%!N!3-3dp-63#3"4e"N!!!!!+-3dK15`!$!J!"h!(F!)` +!!!#B!+3!N(L#J%!!`!#3"i!33!'!!*!(J""!!D!!N!G1ZJ'k3TFr2!!%6Ud'`NK +ZrrBr2!!%6Ud(!Nr[!!aJ!!&3$%B!#@B!!+C#V[rb3LFI2!!"5'lrmLm-2c`!2+R +R2A`!rrrq5'lqmdKZrri[,[rb,``r2!!iUHFGE[rrr[*)E[lb6UdBmMJ!GJ"FMf! +b)'hMl(!'`--J8"S`#%T)K3a&!!0R"Ja&!!9Q&#"Yiqa`"X$$)&"b!")`#%Zi3@G +D8N-JEH2X)&#f8'A%,c`"p3!"6Ud'FMi!98"BMfF!!,)-4`!$CJ4`"f!#F!Nm!%k +Y"NT#Td*R6Ud'#Mk%F2c34Mm!3UG1V4P#)'hMj#"32UJ!3%kY&q*J!!#k,c`!P3! +86Ud+UPL2B'K1V3C+B!!!T,a(Ce`-4`!*CLJ[2!!$!3"1ZJ#D(V`!!5m-3QHTjd+ +R2c`!"%kY"X*)E[rfU5K3Mf!X$%B!#@BQ,c`!!`!!6VS!E%)A,`a#CkRR5'd'XMm +m!!41V3E#5'lrpUNS8)mm"d+Zrr)-4J!*CKT#*amm!!&)E[rb,``r2!!mUHG+(fB +%F!"J!R!"(`!r2!!"6Ud'UPL22c`I3NkY"N)q!&52CJ$pRNcZ%2MqfNjH6R919[r +b,cJ*eMmZ!!K)E[rq5'lrqNKZrr+TM8SZ!!TR#!!!!!a$6da0!*!&(8'S!!!#M%0 +)6NX!!`)!!G`"h!#-!!!!Q!#N!*"iJ""!,3!!!!%G@J!!Rrp!,3!!!!%GPJ!!J"" +!,3!!!!)5K!!!!!*PX!!De8L!8!!!rrm!%J"-!!%!N!G)!!!!5!#3"3J!!3!)!*! +'(a!!N!4R,!!!!"3!!Q@J!"-!hJ#)!Bi!(8'!!!!!&!!#CE!!!3#R!"-!jJ!G3A` +!!!!m!!*PU!!De8L!4!!!rrd!%J!r!!%!N!G)!!!!5!#3"3J!!3!)!!!!!Qhm(a! +!N!@m!!!!&!!#CD`!%`#N!!*Yj!!G3A3!!!!m!!*PS!!Qf3#!T!!!!!*Yc!#M!!% +!N!G)!!!!5!#3"3*YY!!)!*!'(a!!N!8`!!(3T!!#ECa#4Q"!5-B["Lm-6VS!B$S +!8%pR"!!#EB4`!#m!,`X[$%kk!33B!(!!%!4+J!!#E@aQ"(!!B#a`!"!%$%!!!@F ++-!C54J!#E94YZVaZrrjQ$L"8)NJ`+3!`5-$4U!!#E6cr3%cZ'2$rj%jH6R919J! +!51F$#!!#E53SEJ!)5SGY$#m-6VS!E,#(@%pZ"($CB&BJ9$!S!$")`#)!)!G1V3K +L,J!J9#&(!$BJ9,kS!#"Q%L*)-#N!-%M!X+J!*'B%F!"J*#"8-#J!-%M!,`!["bm +-6VS!e$`!6qm!$'F))&4`rb&!!$B`"NcZ!!!!$%026%d!N!8G3A3!!!+-3dK15`! +$!J!"h!(F!)`!!!#B!+3!N(L",%!Y!*!'3!#!"N!Y!*!'99@#J%!Y!*!'DUXq(dL +%5-3["#m-6VS!K%T(6qm!('B-)&3K43!J)&3K4J!N-!G-lK$`rqa1ANje6PB!!%M +R!3JSEJ!))&3JD!!FS'NH!#"8)'J!(+!T%!G-lK#!rrK1ANje6PB!!#m(,Li!%'B +%F!"J)#"Z!!JJ8#mS!!S[,J!-,bi!&#m(F!'S)P@2UDmq(c!(,Llrr%jH6R919J! +!51F"##KZ!!JJ9#"S!"bJD4i!)&3JD!!F%#i!$k"U%!G-lK#!rrK1ANje6PB!!#m +-+'i!##"85UJ!#QB%F!"J0L"85LJ!'QBS,bJ!"%kY%b*)`&L2,`!J9#mS!!S!!QT +i)&3K3!!@)&34I!!"!"T36b"8)#J!!QTJrra1ANje6PB!!%MR!aJX,J!-+'i!!QT +)F!!K3!!F)&3K3!!N)&3K3!!J)&3!!QS`,`C1V3"k*N"9Mcki!L!q(fF%-!F!!QS +B)8X!(#"8)@i!%!!J)&3K4J!NF!!!!QS!rr"1ANjeB#F!!!G)!%jk`$%J!!T19J! +!,``SEJ!)F!!S`#L!+'lrr%jH6R919[ri51F!'%KZrrK1Z[rD+(J"'#(i!UB"'#C +-@Bm[,J!)5'lrq%KYpGT`!"m!FJ!r!6m"2`&`%$m!F!![!+P8+&mJ5`!!!"!!!Ir +r!!!!"!!!!!%!(8-i!!!!8!!"rrm!!!!'!$i!!3!!!!)!!3!!!3!!!3K-BAP[GA3 +J-F`!'YcJ!*!%#!"!J00@!#JJq!!E!"X!!!!(!"e#N!!!!3"4!*!'""d!!3"4!!! +!*J!%rrm!!!!'!!)!!33!!!%!!)N!!!-!!)N"!!8!!)N#!!F!!)N$!!!!0J!)rrm +!!!!%!!S!!3!(rrm!#!!)!*!%9CS!!N#+!!0![!!%3)S!"8#+!!C!LJ!(3'3!#%# ++!*!(%J!"rrm!!!!'!!!!!3!!!!-!!%46493!!!'%!!Mrr`!!!#B!5!!"!!!!!J! +!!3#3"hrrrrprrrrr!"e$5!#3&3%!!3#3"3%IT!#3$!%S!A8!"`!!"J!!!$m!!!! +5!!!!K`!!!!8!!J)!(3!!!!-!N!4KK!dm!!B!!!3!!!#3!!!!!")!!!'-!!!!!3! +#!J!!!#!!!!!9!!!-!3%!!!F!!"J!!!!r!!!!*!!!!)F!!!!&!!)#YdB!!!!%!*! +'$6`!"J!!&J!!!*!!!!!!*!!!!0J!!!!"!!)#!!!!)!!"!"8!!!`"!3!!"`!!+J! +!!$m!!!!f!!!!K`!!!!8!!J+hNJ!!!!8!N!B02!!'!!!S!!!!N!!!!!!f!!!!f!! +!!!%!!J)!!!!J!!)!&3!!$!%"!!!(!!!m!!!!2`!!!%J!!!#(!!!!"3!#!VIH!!! +!"J#3"Jdm!!B!!$S!!!#3!!!!!%J!!!$B!!!!!3!#!J!!!#!!!`!9!!!-!3!!!'! +!![rr!!!!+J!!!!)!N"%"!!%!!!!G3p!IT!#3$!%S!*!4!3!"!*!&!AUq!*!-!5J +!N""%8d98!!!!5!!"!*!)JJ!"!!!$!!!!!J!!!!3!!3!"!!%!!!!G3M3!(8)S!"e +#,!#3#8J!$!!G3D!!!3!-!*!,"J#3"3%!!!!+!*!&&3!"#J%!N!F+!*!&"3!G3MJ +!!!!&EQ&YC3"%8d98!!!!5!!"!*!)JJ!"!!!%!!!!!J!!!!B!!3!"!!%!!!!G3KJ +!(8)F!"e#%!#3#8J!$!!G3G!!!3!-!*!(!J!!!!B!N!8"!!!!#J#3"48!!3S"!*! +(#J#3"3F!(8)N!!!!"fjeE@*PFJ"%8d98!!!!5!!"!*!)JJ!"!!!&!!!!!J!!!!3 +!!3!"!!%!!!!G3I3!(8(m!"e"i!#3#8J!$!!G3CJ!!3!-!*!("!!!!!B!N!8"!!! +!#J#3"48!!3S"!*!(#J#3"38!(8))!!!!"@4KG'8!4&0&9!!!!%J!!3#3#))!!3! +!"J!!!!)!!!!%!!%!!3!"!!!!(8(B!"e"T!!G3K3!N!P)!!`!(8'F!!%!$!#3"`B +!!!!'!*!&!3!!!!S!N!89!!%+!3#3"`S!N!8&!"e"h!!!!!9dD@eP!%46493!!!" +8!!$rr`!!!#B!5!!"!!!!"`#3"hlEEArrrrprrrrr!"e#P!#3$3Zi!!!,Z!!!!3! +"!*!&!4qN!*!-!5J!!!!f!!(rr`!!!#S!!!!#!*!4!3!"!*!'(k3!N!`"+!#3#!% +2S%)VC3!!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_4.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_4.0.hqx new file mode 100644 index 000000000..b855dcb38 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_4.0.hqx @@ -0,0 +1,134 @@ +(This file must be converted with BinHex 4.0) +:#@4KG'%ZBhGV0!"$9d4#3Np#6`%!!!!R%3!!!D,F(!3!R!"#6d*2!!%!@"A8!*! +%!aJ#C!!2!")!'3!5!!m!%J,r!P)"!!!"!*!5!3!!!J!"!!!!@",S!*!("`!"!!! +!!3!"!!!!5!!!!"!!!!!"!!!!!3"B%ZJ!N!3"!3!"!*!*$J"G!*"T&3!!$!%!N!p +B%l`$!rrr!!!!"3!!!Im"!!%!!!)!!J#3#J%!!!%!!3!Y!*!%!3#3"&S!!!!S!*! +&"J%!N!3"!!%!N"N1$9"PFQC[FQeK)&9cCA)!N!pi!!m!!!")!%J!N!3#m!*!rr( +rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`! +"!*!1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3#3#a`!!2rr!!!!"!!3!!%!"3!!!3! +"!3!!!3#3#PMYi!0@!!!!!3!-!*!+rrm!N!6rr`!"!!%!!!!"!*!&!3!-!!!!!3% +K!!!'ZNKZr[`[2!!4!)Y1V3fU!!!#3!!!!SJ!N!8"!!%!8J*V,S&)EJ!!!DB0JNK +Z!*!%r[a1V3U+(V`!N!6qr$mm!!K1V3"B%X`!N!PB%J3!N!KJ!!#N5'lqr$mm!!K +1V3E+5Llqr&b2C`!!MJ`Z!"rqr'-'(A`!(rlm6Ud'5N+R3QG1V3B+H[hD4M!&A)p +R)QXJ98"R"'SDB!J!N!4+!'GQ2c`!!Nkk!*!%)!a8MfG@,`a)EJ#3#9J4V%r[!!S +!!!"3!DB#D`!"!!!"!*!%!3!!!3#3$&N23!#3"@NR8JX!N!FI4NkY"N)q!3!)!*! +%60m!@",N!!!I*!#3$2q3#!!S!!-"h3*p!!K%8d98!!!!V!!"rrm!!!!U!(B!!J- +!!!%!@"-X!&J5[!"B%VJ!!!"B%S3!N!9B%Y`!@",X!&J6$!"B%V3!@"-N!!N!@"+ +3!!!(!*!*!3!2!")!'3!5!*!(!`)E!DB!N!9G!&J5i!"B%S!!N!8"!!!!!3#3#1# +H!!!!!`#3#4d!@",!!!"#B!#3"3%!!!!"!*!)`*i!!!+m!!6rr`!!!+`!!!!""'j +KE@8l!#JIV!!S)XL!&3!'59i"!!%!!3!"!!!S)am!#!!"Ej)!+#+H!!!#1`!G3p$ +rr`&@!!rR9!!S)ai!N!J"0`#3"#!GBB3J#%#!!#F!N#!#!*!%@"0B!*!Z"QjeE@* +PFLJIV!!S)XL!&3!'59i"!!%!!3!"!!!S)am!#!!"Ej)!+#+H!!!#1`!G3p$rr`& +@!!rR9!!S)ai!!!%!N!8"0`#3"#!GBB3J#%#!!#F!N#!#!!!!Irm!N$!%C'&dC@9 +b+"qX!#JLb)!9!!C*AJ%!!3!"!!%!!#JM(`!)!!&[NJ!S)Ti!!!)l!"e$d2rr!9B +!$qG8!#JM(J!!!J#3"3%h!*!%)"eKK#!)3)!!*`#3)!)!!!"rr`#3-!4dD@ePCA) +S(k`!+#,)J"8!"NPH!3!"!!%!!3!!+#-I!!J!!@q5!#JLRJ!!!MX!(823rrm"9J! +2je3!+#-H!!!$!*!&!6F!N!3J(@'%)!K!J!!R!*!J!J!!!(rr!*!c!3#3"!`!!2r +r!!!!!J!!!!%!!!!-!!$rr`!!!!)!!!!"!!!1NJ!"!!!%#%0838)!!`!)!&J5X!" +B%UJ!@"+J!&J5Q!#3r`#3r`#3r`#3pJa$6da0!*!&@"+X!!!#M%0)6NX!#!)!!43 +"&!#-!!!!P!#F!+3!dJ%3!5S"9!#3E`B!"(4[G'm!"J!%G(9dG3!'!!4dDA4T!#` +!+LJJBfpZG'&TER-J0#"QD@9XC(-JEQ&YC5pZG@eLCA)[C'&dC5pdD@eP+3!m!$S +S)'PZ)'CTC@aN)$%k)(4[G'mXG(9dG5adDA4T)#XJG'KPFf8JCQPfC5"MEfeYC@j +dFp8JE'PZCA-T!"J!&5JJD@iJCQPPE'3J-MSJ-b`d,$8J+3!!+!!Q+#"TEL"QD@9 +XC#!c1L!a,c%[0#`J-5mc-5m`0#`J-6)[-5mi15N!)J!I+#"TEL"QD@9XC#!d1L! +c1M!`,#!d1M!`,#!e1M!`+DM"l[rq)&!LEJ!)3I!)6("L)YK4b2rm-YK`!5KI6Pj +1G8j@rrK)j`%B+'i!#(lrcL`!"6mm!!01V3l5)%!QD!!)##`!!!!19)pRI!`(!$& +PGJ`(!$PLF%+ZrrK`!"!("N$rcce!rrJJ8c!ZrrL`D!"-E&*#V[rm3LFI2!!"5'l +rr#m,2c`!2+RR3KF[,[rm,`Xr2!"FUHFI2!!",blrq#m,2c`!A+RR,`Xr2!!3UHF +JEJ!--,`!!h$r1d#l)$Y!Zaj`!@!%3P4`!%cI')"1ANje6PErmLmZ!!Sr,J!)5'l +rpNKZrr*)E[riUBe)E[riU+0)E[ri,c`!!3!"U+N[,J!+U(01V3Pb5UhZG'F@)'h +ZG%KS!!%!!!!-3dp-63#3"9J5T!!!!Sa$5%j,!!-#!!(@!GB!M!!!!*S!U!#3H3b +#J%!!`!#3#!b!%%!"J!#3#!b!%%!"S!#3"b"32bJ!)%kY!rT+3&52C`j)E[rd,`Y +1V3j58)pJ$%KZrr3[#dkY$PT3Mb",S#T+,J!3C`j`Im!i#6J4`!Ni,`bST#!(`Be +-haM!6Pj1G8j@rr3[$%KZrr3r2!!$6Ud4%M!ZrrU3!'lrpJC!rqmp32rq2A`!&2r +mF!JZJ%KZrr41V3Mk5'lrp%+R,c`!!3!"U+FZ[))!!3")E6h#,blrr%KZrr3r2!! +$6Ud2-LK!)!`SE[r`6Pj1G8j@rrT)j`-B+'i!#%+R,``r2!!NUHFJ6+!T,a5SSb" +-S#SGI!!'rrT#E[rm3QlrrL"YlQ`Q8$!YlR+`8f4)-#hZFL"c"!`J8$i3I!"J0%* +R2c`!!6mZrr`[$$mm!!LTjaeZrrhrqdKZrrSr2!!#,blrr#m-2c`!@+RR8Qlrr&5 +28NDq4Q,)60mB`%jH6R919[rm,``SEJ!)5'`!MLmZ!!a)E!"15'`!#%kY2[T+,!" +16qm!%'B15'`!6NKX!!j1V4E58)mJEJ!-5K"Q$LmZ!!`[2!!D!+*1V4,L5L`!MQB +85'`!MMmm!+*`(0"X!!)r!%kY%Z)SAdjH6R919[X!51FI'(i"3Qlq"NKZrF"1V41 +b3UhZE#km!"!!!6mm!!41V3!!!!a$6da0!*!&@"+F!!!#M%0)6NX!!`)!!GB"eJ# +-!!!!QJ#S!*"j$*ES3#d!!!!"(9S!!!!-J!&!,3!!!!%GPJ!!!!b!J%!Y!!!!!K+ +%!!"53Ca*)E[ab,bhZE%kY&fT53CJC`!'!!"+T)H!"X5'lrP%kY#2T)E[f +!,c`!#c,06Ud5iNKZrAT1V42#,#lpI$eZrAVrUN(Zr(SY52qQHJ"2l`!-B!!"5K! +e85$ZCNR!28$q#%KZr(Sr2$,0F"h3E[i)2`"1V4,L3QFr,[qU,`C)E[ak5'lpHM! +m!!'U8NKZrAT1V3K55J"FMfBD3QFr,[h!,blp`NKZr(T)E[ek-$`!!DT59)p)E[e +k6Ud)8NS!@)pR!!#D2A`!![i'5'lqP$mm!+*`%p"&2`"1V4,L3Hlq$N2ZrAT`%#$ +C8FMrr$$C5'lq9$mm!+*`!G"&2`"1V4,L2`9)E[i',blmENkY&hT53%r[!!TQ"R! +!B!!$TN*ZrJC)E[j82c`!SR!(d%8r!%kY%Z*)E[k82c`!SR!0d%8r!%kY%Z*)E[i +',blmENkY&fT53CNC`!'!!!fC)E[j82c`!SR!"d%8r!%kY%Z*)E[k82c`!SR! +0d%8r!%kY%Z)r"8KZrJB[,[aZ6UdAHP*!6qm!#QB'F!"J!!-Q8N8-43!'E3$qXMe +m!!(q"NUYr14R!!%XHJ"J!!%3)'hmj$!m!@V"a5"33qll"%(`#""`@3!!!!a$6da +0!*!&@"+8!!!#M%0)6NX!!`)!!GB"eJ#-!!!!QJ#S!*"j$*(!!*!,$*(!!*!,$)+ +!3#d!N!CUU`#3#2rr!!!!!3%%!!!"!*"Krrm!!!!"!JJ""!%!N!JN!*"Brrm!!!! +"!JJ""!%"!*!(5!#3@2rr!!!!!3))!33"!J#3"f`!N&Mrr`!!!!%##!%%!3-!N!H +3!!#3$4!!!Irr!!!!"!!!!!%!@"+-!!!!AJ!"rrm!!!!'!%`!!3!!!!)!!3!!!3! +!!3K-BAP[GA3J-F`!'YcJ!*!%#!"!J00@!#JJq!!E!"X!!!!(!&J5L!!"!&%!N!F +2!")!'3!5!*!'""d!!3"4!!!!*J!%rrm!!!!'!!)!!33!!!%!!)N!!!-!!)N"!!8 +!!)N#!!F!!)N$!!!!0J!)rrm!!!!%!!S!!3!#rrm!!`!)!*!%43i!!N!1!!0!$J! +%3!i!"8!1!!C!$J!(3!i!#%!1!*!,%!!"rrm!!!!%!!!!!3!!eX!!!!!3!!(rr`! +!!!3!!!!"!!!!!`!!!#`!"2rr!!!!"J!)!!(rN!J!!!")!!J!!3")!!J!!J")!!J +!!`")!!J!!!!3!!$rr`!!!#3!"!!"8dp59!!!!"!!!2rr!!!!KJ!%!!&58&*8!!! +!%J!!rrm!!!!Q!!B!!9053dMrrd46493!!!(%!!Mrr`!!!#i!5!!"!!!!!J!!!3# +3"hrrrrprrrrr!&0)D!#3&3%!!3#3"3%IT!#3$!%S!3!!"`!!"J!!!$m!!!!5!!! +!K`!!!!)!!!)!!J#3"3-!N!4KK!!*!*!%#J!!"J!!"!!!!*!!!!!!%J!!!B`!!!! +"!!!#!!)!N!F9!!!-!3!+!*!%!3!!"`!!'!!!!$m!!!!N!!!!K`!!!!)!!!)!!J# +3"33!N!F*!*!%#J!!"J!!&J!!!*!!!!!!*!!!!0J!!!!"!!!#!!)!!!!"!!%!&3! +!$!%!#J#3"!%!!!F!!#S!!!!r!!!!0J!!!)F!!!!#!!!#!!)!N!8&!*!(#3#3"!S +!!!B!!#J!!!#3!!!!!$B!!!$B!!!!!3!!!J!#!!!!!J!#!"8!!!`"!!S!N!3"!!! +(!!!m!!!!2`!!!%J!!!#(!!!!!J!!!J!#!*!&"J#3"`N!N!3+!!!'!!!k!!!!N!! +!!!")!!!!f!!!!!%!!!)!!J!!!!-!!`!9!!!-!3!+!*!(B!!#rrm!!!!U!!!!!J# +3%3%!!3!!!&J5k"qN!*!-!5J!N"%"!!%!N!8"HVi!N!`"+!#3%%46493!!!"8!!% +!N!L#!!%!!!-!!!!#!!!!"!!"!!%!!3!!!&J5E!"B%R3!@"*N!*!(@"*`!*!&5!! +-!&J6`!!"!!`!N"%)!*!&#`#3"3`!N!8#!!%+!3!2!*!(#J#3"38!@"*S!!!!"@j +KE@8!N!4D!!(rr`!!!%i!!!!"!*!0!3*!!*!P!3!"!!!"!*!64&0&9!!!!&3!!3# +3#))!!3!!"!!!!!)!!!!'!!%!!3!"!!!!@"*B!&J5B!"B%P!!N!GB%P`!N!9)!!` +!@"(X!!%!$!#3"`)!N!N)!*!&#`#3"3`!N!8#!!%+!3!2!*!(#J#3"3F!@"*8!!! +!"fjeE@*PFJ#3"&S!!Irr!!!!6J!!!!%!N!d"!N!!N#8"!!%!!!%!N"0%8d98!!! +!9!!"!*!)JJ!"!!!&!!!!!J!!!!3!!3!"!!%!!!"B%N3!@"*-!&J52!#3"eJ55!# +3"8J!$!"B%E3!!3!-!*!("!#3#3J!N!8,!*!&$!#3"3)!!3S"!!m!N!F+!*!&"3" +B%N!!!!!&C'&dC3#3"&S!!Irr!!!!6J!!!!%!N!d"!N!!N#8"!!%!!!%!N"0%8d9 +8!!!!9!!"!*!)JJ!"!!!'!!!!!J!!!!3!!3!"!!%!!!"B%M!!@")i!&J5+!#3"eJ +50!#3"8J!$!"B%E!!!3!-!*!("J#3#3J!N!8,!*!&$!#3"3)!!3S"!!m!N!F+!*! +&"3"B%L`!!!!&G'PYC3#3"&S!!Irr!!!!6J!!!!%!N!d"!N!!N#8"!!%!!!%!N"0 +%8d98!!!!9!!!rrm!!!!Z!%J!!3!!!!F!N!GqfferrrrrIrrrr`"B%L3!N!d,Z!! +!#lJ!!!%!!3#3"3%IT!#3$!%S!!!!0J!"rrm!!!!U!!!!!J#3%3%!!3#3"KqN!*! +-!5J!N!a'6P40!*!%3e988`#3"%4698d!!!!Q!*!2$Je3CA*QEh*YB5"9Ff9b!*! +)5%4153!!!!B!!&08@8`!!!(8!!lrr`!!!"`!3!!"8e4C6!"B&EJ#!3"B&E3!N!9 +B&E`!@"@N!&J9c!"B&D!!@"2%!&J6d!#3#!%!!!$rN!3!!!!'!!,rr`!!!"m!N!3 +%#J!"rj!%!*!+rrm!!!!#!!%!!J3#!!$rr`!!!!)!!3!"!!%!!Irr!!!!!3!#!!- +%#J!"rrm!!!!$!!%!!3!#!!,rr`!!!!%!!`!%"!S!!Irr!!!!!3!"!!%!!3!$rrm +!!!!"!!3!"33+!!(rr`!!!!3!!3!"!!)!"2rr!!!!!3!&!!B!!3!!rrm!!!!&!!% +!!3!"rj!%!!!!!3!'!!F%#3!"rrm!!!!"!!%!!J!"rj!%!!!!"!!(!!J%#3!"rrm +!!!!"!!%!!3!"rj!%!!!!"!!)!!N%#3!"rrm!!!!"!!%!!`!"rj!%!!!!"!!*!!S +%#3!"rrm!!!!&!!%!"!!"rj!%!!!!#!!+!!X%#3!"rrm!!!!"!!%!!3!$rj!%!!! +!"!!,!!m!!3!!rrm!#`!(!!%!!3!%rrm!"`!!!!)!$!!3!!N!!Irr!!!!!3!"!!% +!!Irr!!`!!!!"!!d!%3!"!!$rr`!3!!%!!3!"!!(rr`!!!&J!$2rr!!!!"J!%!!& +)390)N!"&Fj8!!DA)XFS!!,E5Xmi!"-$5Xm-!!XM9rFi!!`!**BN!#3!**SF!#!! +A*AJ!"J%'*JS!$3%)*JS!"3%)+!X!#`-'*JS!#J!!!,B!#!!'!!%!&!!+!!*$5%& +5!&J9R!!!rrm!!!!"!!(rr`#3#!`"!*!&"`#3"3(rr`#3"!`"rrm!!!!"!!!!"3! +"rrS!!3!!$!(rr`!!!!%!!!!@!!(rk`!!!!%1!Irr!!!!!3!!!#)!!IrI!!!!!J` +"rrm!!!!#!!!!!3!"rri!!J!!$!(rN!B!!!!6!!(rlJ!#!!%-!Irr!!!!!3!!!"F +!!IrU!!)!!3S"!!!!0!!'rrm!!!!'!!3!!8K"8dJ!!J%,!!%!!J%2!!3!!J%3!!- +!!`%,!!)!"!%,!!8!"!%-!!F!!!!q!!,rr`!!!"3!#J!#3d9-6!"B&E!!QIrr!!! +!!4rr!!!!!J#3#2rr!!!!$3!!(rm!!J#3#a`!![rr!!!!"J!%!!&)390)!!)Ir`! +")!%!N!H1!!Arr`!!!"J!#J!#4e*35!"B&D`!!2rr!!!!!3(r!!!"!!%!!!)!!J# +3"[rr!!!!#J!!!Im"!!%!!!)!!J#3"[rr!!!!!3!4!@i!!!%!!!)!!3#3"[rr!!! +!!3!$!A`!!!)!!!)!!J#3"[rr!!!!!3!"!Ai!!!%!!!)!!J#3#5i!"Irr!!!!"J! +%!!&)390)!!-#J!!%!!8$IJ!$!"-#E`!#!3)$!3!"!`%"!J#3"!)b!!Arr`!!!'` +!#J!#8P9-8J"B&#!!-rrr!!!!!3(r!*"Nrrm!!!!*!!!"r`#3B[rr!!!!!J!#!Id +!N!4!!*"Grrm!!!!"!J!"r`#3B[rr!!!!!3!!!rm!N'8Z!!Arr`!!!!B!"!!"5%& +65!!!!Im!!3!!!rm!"!(r!*!%!J!"r`!$3!)"r3!#!!!!0!!5!!%!"!!#!!3!!Na +,99!!!!!-!!%!!J!$!!3!"3!'!!F!#!!*!!S!$3!1rrm!#`!-!!d!!!$%!!Arr`! +!!#3!"!!#6N&043!!"-LabU%!N"i##XLabU(+e-[MXHd!N"J$"0+c`l`!N"i%"0A +pcX3!N"i&"0+ccV)!N#cF!!2rr`!!!%3!"!!#4Nj863!!!!)(3fKTBf&RE`#313- +!!JC(C@jPGQ%!N$S9!!)*5'9XGQ9dD@0K!*!f494#6!!!!%"'6P40!!!Gh8099&- +!!"hP4&0963!!(He)4%j*!!!H'e08@8`!!"iP494#6!!!*XRrr[hmqrVjq2$am[2 +dpIEhD9i!!!%!!!!"5!!!!%J!!!"D3#a1A&jdCX4PG&m%3!4rr(rJIr"rq(rmIrp +rrhrrIri*C'&dB5jMGfXd!J!!!%0A4%*#6d*2!*!-3eG%3N*23Nm!N"M2Xdk#!*! +'!D)!N!Ell*!+!*!'qrX!N!hll*!+!*!'qrMl!*!-qqb3#J#3"[X!q2X!N![ll*! ++!*!'q`!!q2X!N!8V!!!!$P"PFQC[FQeK)&9cCA)!N!3Lcl01JJ!!!&M[l!2S!!( +2Xdk#3A9dD&4&@&3$kJ!d!*!($!Y$E'&bDA0AEh*VF`!!!3!!!!&)!!!!5!!!!&S +!@"58'9J!!!!F!&S!!P4&@&3!!!!DF'j[G!!!!#C69&)J!!!!-J2Urrm!N!Vrr`! +!!")!@")-[r6rr`!!!$J!@"'%MUX!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_5.0.cwk b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_5.0.cwk new file mode 100644 index 000000000..ff33586f3 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libmwaw/pass/ClarisWorks_DB_5.0.cwk differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/JazzLotus.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/JazzLotus.hqx new file mode 100644 index 000000000..7c527f2c1 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/JazzLotus.hqx @@ -0,0 +1,39 @@ +(This file must be converted with BinHex 4.0) +:"A0SC@9d!%TA5e0+39TD!*!%"fd!!!&%EiF!!!!#!!X!%3!FBf9XE&3!N"!%!!! +!"!!%!"%!((0NBR0NFf4LFf4LFf9QCJ#3"JF!!!!(!!3!%3!H5c&6!"3!!!S!0!! +d!%8!43!(!!(rr`!"rrm!!!$j!"%!(NXb8`!!i`"Y!23!!!!5!!)!"`!#rrm!![r +r!!!"!J!4!"j,-e-!N!i(rj!%!!,rr`#3"4%!(&056NF!%J!#&!!!#J!d!2`!"`! +!rrm!!2rr!!!!%3!F58-a!!!!!4J!!!!5!!)8!!!*rj!%!!,rr`!!!"%!(%P$-J# +3"")!!K3!!!S!0!!*rj!%!!,rr`!!!"%!(&456NF!"J!*!!!"#3!+!!!!#3!#rrm +!![rr!!!!%3!F3NP1!)!"Irprr`!!!")!!J!)!!6rr`!%rrm!!!!4!"a@38`!!!) +8!!!+!&`!9`"Y!!MrN!3!"2rr!!!!"J!'9N%!"J!5!"8"*[m!!3$rrh&3!!B!%J! +'!")!"J!5!!!!#JJ!"`!!!"B*!*$j32rr!"B!#J%!N!B5!!B!!J!&rrm!%`!%!!, +rr`!0!!KrJ!#3"3)!$3!)Ii!!!3!!!!-!%!!HIi!!!`#3$3`&!!%&!!)4"3!$%J- +!$3!)Ii!!!!!"!!3!%!!LIi!!!3!"[rq!!*!)%!'rrlrr!!!"J!#rr`!!%J-!%!! +RIi!!!`!"2rbCN!HD!"8&!!%&!!-6"3!%&!8!!J8!!a%%&!-!$`!-Ii!!!3!#"@& +LBf4P!!i!%(q!!!)!!N!!Nc13"M)!%!!BIi!!!`!#`!+!!*!)"J8!#!33!`!3!#T +rJ!!#!!1rrqc-N!E1!"J"J!#rr`!!!Erq[rd!!"3"[rqrr3!!%J-!%!!BIi!!!`! +$3!'J!*!)"J8!"33I!`!3!"TrJ!!"!!3!N!X)!B$rJ!!!!!-!%!!HIi!!!`!%2rc +VK4ki8HZ&(J!-!$rmki8HZ&(VK4i$!"!!'Rq!!!-!"8!!J!#3#!J&!!)&!!03!`! +3!"TrJ!!"!!G!"B!!N!J)"3!#"3!'&3-!%!!DIi!!!J!(!*!,#!8!!38!!aB$!"! +!'Rq!!!-!"crrJ!#3#!J&!!%&!!)A!`!3!"TrJ!!%!!Frri!!N!J)"3!""3!#'J- +!%!!DIi!!"3!(!*!,#!8!!38!!KX$!"!!'Rq!!!%!#!#3#`J&!!%&!!)C!`!3!"T +rJ!!#!!Jrri!!N!J)"3!""3!#'!-!%!!AIi!!!!!+!*!,"38!!4i$!"!!'Rq!!!% +!#J#3#`J&!!!&!!%F!`!3!"TrJ!!#!!Srri!!N!J)"3!!"3!"(3-!%!!6Ii%!!!! +,!Q&L!!J'!@%'!@)J!`!3!#"rJ!!"!!Y!!-QCN!F!$J+!!EriJ!+rq!!!J!%$!"! +!*(q!!!!!$-!!J!#3#")&!!0#"3!#"3!$FK)&!!0$%J-!%!!KIi!!!!!0`!'*@Zr +5P(9)l!!29J8!!`8!!Q!5"3!$4")$!"!!-Rq!!!%!$F!#dkJYbRp8+G8!)!8!!dm +&!!0f%J8!!h85"3!$4K)&!!0d%J8!"%854a)$!"!!1(q!!!%!$Rrr3)-!N!FQ"3! +$5!8!!NN5"3!$5K)&!!00%J8!!Ni5"3!"6")&!!)&!!0,%J-!%!!@Ii!!!!!22rq +!!*!)"&98%J-!%!!EIi!!!3!23!#!!*!)#98&!!)&!!0F!`!3!$"rJ!!#!!qrri! +!N!JH"3!$2`8!!e-5"3!$8K)&!!0P%J8!!h%5"3!$CK)$!!d!#(q!!!!!%3!"!!d +!#!+!!!%!%3!"!!d!#!q!!!)!%3!"!!d!#"+!!!-!%3!"!!d!##+!!!3!%3!"!!d +!#$+!!!8!%3!"!!d!#%+!!!B!%3!"!!d!#(#!!!!!%J!"!!d!#(+!!!%!%J!"!!d +!#(@!!!)!%J!"!!d!#(q#!!-!%J!"!!d!#(q%!!3!%J!"!!d!#2q!!!8!%J!"!!d +!#(q!!!B!%J!"!!%!!$VQ!!!"!!!!!4)!!!!5!!!!-J%Z!!!!'!$,!&`!k`"m!!! +"!!!"!!!"%J%!!)B",J!!"A0SC@9d!J!!!%TA5e0+39TD!*!+$RB!N!4+9dY65N& +D@J#3'0YlTfX!!!FC!!!"4!##!5i!!!!B!&F!'3"h!$N!!!%!!!%!!!%5!3!!J`% +Z!!!!'!"A!'B!G`#'!!!"!!!"!!!"%J%!!)3",J!!!"J!N3!C!,%!13!!!3!!!3! +!!4)"!!#&!5i!!!!B!*%!CJ#a!)B!!!%!!!%!!!%5!3!!KJ%Z!!!!'!!H!!`!S!# +J!*!&$Je+39TD)$!a,M!`-#`a!!!"!!!!!4)!!!!5!!!!-J!#&5!"HJ!!!"`!-J! +!8e45)!!!!!S"!2rr!*!&!VMkV2!!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_2.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_2.0.hqx new file mode 100644 index 000000000..606719746 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_2.0.hqx @@ -0,0 +1,45 @@ +(This file must be converted with BinHex 4.0) +:#R0SC@9d,RGVFc)!39G68e"656)"!!!!#Fm!N!3NZ3!!!!J!2J!%!FB#2J!!"@S +!!`#3"`%!N!B)r`!'!!N!A@Ni!(i!N!FY!G3!N!8*!!!*!J#3"`-!N!FX!!%!K!! +#!0`!!`%d!!3"M!!&!H5!"J+S!!F$!!!)!eJ!#31`J!S%#!!,"'!!$!5i!!d&%!! +1"@L!$`A!!"!''!!4"R!!%JE)!"-())!8"hJ!&3I3!"B)+!!A#)!!'!MBJ"N*-!! +D#BJ!'`RJ!"`+1!!G#T!!J"i+k!!I#d!!)!ZB!#%,m!!L$%L!)`bJ!#3-q!!P$9! +!*JfS!#F1!)!S$PJ!+3k`!#S2#!!V$f!!,!qiJ#d3%!!Z%'J!,a$!!$!4'!!a%A# +!-K()!$-5)!!d%RJ!04,3!$B6+)!h%i!!1"2B!$N8-!!k&)J!1a6JJ$`91!!p&C! +!!$i9k!!r&N!!3"DBJ%%@m!"#&dJ!3aHJ!%3Aq!"&'&#!4KLS!%FC!!")'9J!54Q +`!%SD#)",'Q!!6"Ui!%dE%!"1'fJ!6a[!J&!F'!"4((!!8Kc)!&-G)!"8(AL!94h +3!&BH+!"A(S!!@"lB!&NI-)"D(iJ!@arJ!&`J1!"G)*!!!&iJk)"I)8!!B#'B!'% +Km!"L)NJ!Bb+JJ'3Lq!"P)e!!CL1S!'FN!!"S*&L!D55`!'SP#!"V*@!!E#@i!'d +Q%)"Z*QJ!EbE!!(!R'!"a*h!!FLI)J(-S)!"d+(J!G5M3!(BT+!"h+B#!H#RB!(N +U-!"k+SJ!HbVJ!(`V1)"p+j!!!(iVk!"r,%!!J#bB!)%Xm)##,8J!JbfJ!)3Yq!# +&,P!!KLkSJ)F[!!#),eJ!L5q`!)S`#!#,-'#!M$#i!)da%!#1-@J!Mc(!!*!!-KL +!N6*`!*)bb!#6-b!!P$0i!*8cd)#@0#J!Pc5!!*Jdf!#C06!!QM@)J*Xei!#F0MJ +!R6D3!!#H0ZJ!RcG!J+!hQ!#K0r!!SMK)!+-iS!#N12L!T6P3!+BjU!#R1J!!U$T +B!+NkX)#U1`J!UcYJ!+`lZ!#Y2"!!VMaSJ+mm`!#`24J!X6e`!,)pb!#c2L#!Y$j +i!,8qd!#f2bJ!Ycq!!,Jrf)#j3$!!ZN#)!,Y!i!#m36J![8'3!)#q3HJ![d*!!-" +#Q!$"3[!!`N0)J-0$S!$%3rJ!a843!-C%U!$(43#!b%9B!-P&X!$+4JJ!bdCJ!-a +'Z)$04a!!cNGS!-p(`!$35"J!d8K`J0*)b!$655!!e%Pi!09*d!$@5LL!edU!!0K ++f!$C5c!!fNZ)!0Y,i)$F6$J!h8b3!!$H61J!hde!!1"0Q)$K6I!!iNj)!101S!$ +N6[J!j8p3J1C2U!$R8!!!k&"B!1P3X!$U83L!ke&J!1a4Z!$Y8K!!lP*S!1p5`)$ +`8aJ!m90`!2*6b!$c9#!!p&4iJ298d!$f95J!pe@!!2K9f!$j9M#!qPD)!2Y@i!$ +m9cJ!r9H3!!$q9qL!reK!!3"BQ)%"@A!"!J#3r`#3"`hX!#`!!!!"!!%!!3!"2ri +"!!!$!!S!!!!K!*!A+!YZEh*YB@`!!)!#B`PLEfaN!!#!!R-1G@jNCA*XD@jP!!# +!!Q[q![m!!!"(45KQEfjd,f0[E'pb,h0THQ8JBf&Z)'*P)'4PCQPZC@3JEfjXH5" +QEh)JG'KP)(GSEfaP)(0`FQ9KC(0SC@9d)#N!!)!#Brm!!!!Y#Q&XD@GZ!!#!!Q- +*E'9QG!!!J!)$#f0PER4PFJ!!J!)M#R*TCfKd!!#!!N2r!!!!(4YcEfeP)'jeE@* +PFQPZCb"QEh*YBA4c!!#!!Q2r!!!!Fa)`,M)rr-b3#!!!J%*M%M!Z-Mrmc*!)!!# +!3Q!5-#ib2rc-N!J!!)"#B4)`,M)rr-b3#!!!J%*L%M!Z-Mrmc*!)!!#!3Q35-#i +b2rc-N!J!!)"+B2m!!!!M)A0[E@8JC'&dC5"KEQ3JG'PYC5Gc)'C[FQeKG(-!!)! +#Brm!!!"I'$%b,c-[-M!`0%!Y!!!!!4rm!*!%J%*P'$%b,c-[-M!`0%!Y!!!!!4r +m!*!%i%*Q'$%b,c-[-M!`0%!Y!!!!!4rm!*!%`%*Q%M!Z16rqjQD3"`!!J%*Rr`! +!!"-4FfpYC5"QEh*YG@aK!!#!!Q2r!!!!LLF)!6%rri!!N!F@!!N"!!$r!!!!&$r +rJ!#3#B##BcS)!6*!!)!!N!F'#!%c3!$!!*!("!S!#3!@!!N#!!N!N!3S2rkUN!H +V!!#!JQ-P$!)3$J!*!!!*!4)@!*!%#3%!!!!m2rr99C!'9J!!J)*Mr`"`!')!N!X +4!!!),!"G*jLP,Q-'!!!!$J"G*jMrJ%)Z!!!!%!!F*jJ!A@PJ!!!(r!!!!#S!A5H +B!*!*1!#3$8B!N!e8!!-!"`!$!Q1!!*!%!3!#!!%!!J*cJ!#3"B!!!9!!!!!"!*! +4#J!!!!%!!!!Q!!%!N"d8!!!!"!!+!!-!N!8"!*!%-m!!!$1F!!%A2!!!-M4!J'( +)!(A6&N#!B+`!k!!!!2i!!!!'!'K!J0GB!!!!!J!!!!&!J,[X!(DDJJ!!K&S!!4k +M!(DDL3#3#3%HR#!!3)"!J,[X!*!*!4kF!(DDJJ"fQJ!!!4kF3)$--N#!bR"!J!! +!K&S!!!1NJ!!Z4!!!S!+!!#j%!),A,#!)3)!!N!3#!!!!!J!!!!(r!!!!r`!!!!G +!J*9X3)#Ul!#3"KPB!'M3Y!!!#J#3"`Kr!!!!"!"Smc!!%fNS!!"'D!"Sd,5!BZ` +J!(D)!!!%)!3!#M&-!!!#!!!!!Im!!!$r!!#m2`!!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_3.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_3.0.hqx new file mode 100644 index 000000000..0410df8b1 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_3.0.hqx @@ -0,0 +1,54 @@ +(This file must be converted with BinHex 4.0) +:#R0SC@9d,RGVFc-!39G68de69dX"!!!!#UX!!!&''FJ!!!!*!$i!"!'L!Mi!!!9 +X!!-!N!B)!*!)$`!!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*! +%$V!,3!!"!3!!C!!"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3# +3$4N"!(J!H!"i!(J!N!F"!!%!N"!)r`!'!!N!8lfi!(i!N!FL!G3!N!8*!!!*!J# +3"`0!!*!',!!"!*!!!!)!p!!$!9J!"!'mJ!8#)!!'!X3!"`-S!!J$M)!*!r!!#J4 +8!!X%Z!!-"4b!$3@!!!i&j!!2"NJ!%!DXJ"%(%!!5"h3!%`IB!"3)2)!9#+!!&JN +%!"F*D!!B#Fb!'3S`!"S+P!!E#[J!(!YFJ"d,`!!H$#3!(`b)!#!-l)!K$9!!)Jf +d!#-1'!!N$Rb!*3lJ!#B24!!R$kJ!+"!-J#N3F!!U%03!+a%i!#`4R)!Y%J!!,K* +N!#m5b!!`%bb!-413!!!b%r3!-a4B!$38[)!e&5!!0K@%!$F9k!!i&Nb!14D`!$S +A&!!l&hJ!2"IFJ$dB3!!q'+3!2aN)!%!CE)""'G!!3KSd!%-DQ!"%'[b!44YJ!%B +Ea!"((#J!5"b-J%NFm!"+(93!5afi!%`H()"0(S!!6KlN!%mI5!"3(kb!85!3!&) +JG!"6)0J!9#%mJ&8KS!"@)J3!9b*S!&JLc)"C)c!!@L18!&XMq!"F*&b!A56!!&i +P*!"I*BJ!B#AXJ'%Q8!"L*V3!BbFB!'3RI)"P*q!!CLK%!'FSU!"S+3b!D5P`!'S +Te!"V+MJ!E#UFJ'dV!!"Z+f3!Eb[)!(!X,)"a,*!!!()Xp!"c,9J!G#fmJ(8Z)!" +f,S3!GblS!(J[6)"j,l!!HM!8!(X`H!"m-0b!I6&!!(iaT!"r-JJ!J$*XJ)%bd!# +#-c3!Jc1B!)3cr)#&0'!!KM6%!)Fe+!#)0Bb!L6A`!)Sf9!#,0VJ!M$FFJ)dhJ!# +10q3!McK)!*!!1+b!N6N3!*)jG!#61GJ!P$SmJ*8kS!#@1`3!PcYS!*Jlc)#C2$! +!QMb8!*Xmq!#F29b!R6h!!*iq*!#I2SJ!S$lXJ+%r8!#L2l3!Sd!B!+4!I)#P31! +!TN&%!+G"U!#S3Jb!U8*`!+T#e!#V3cJ!V%1FJ+e%!!#Z4'3!Vd6)!,"&,)#a4C! +!!,*&p!#c4PJ!Y%DmJ,9()!#f4i3!YdIS!,K)6)#j5,!!ZNN8!,Y*H!#m5Gb![8T +!!,j+T!#r5`J!`%YXJ-&,d!$#6$3!`dbB!-4-r)$&6@!!aNh%!-G1+!$)6Sb!b8l +`!-T29!$,6lJ!c&!FJ-e3J!$1813!ce&)!0"4V)$48K!!dP*d!005f!$88cb!e91 +J!0C8"!$A9'J!f&6-J0P9-!$D9C3!feAi!0a@A)$G9X!!hPFN!0pAL!$J9qb!i9K +3!1*BY!$M@4J!j&PmJ19Ci!$Q@N3!jeUS!1KE$)$T@h!!kP[8!1YF1!$XA*b!l9d +!!1jGC!$[AFJ!m&iXJ2&HN!!!mPld!20I@!$dAlb!p@!J!2CJK!$hB1J!q'&-J2P +KX!$kBK3!qf*i!2aLh)$pBd!!rQ1N!2pN#!%!C'b"!@83!3)!N2m!N!F2L!!X!!! +!!3!"!!%!!6rq!3!!!`!-!!!!r`#3'63,EQpbE@&Xr`!!!X!*BQpXC2m!!!,J$R9 +ZC'9bE'PZCIm!!!,3#fPdB@aTBrm!!!,)rJ(r!!!!B!KbC@5H!!!#`!TRFQ9PEMX +!!!,!#@*XG@9N!!!#`%!S)'C[ER3JB@jN)'C[ER3JFfPkC5"KFQ8JC'9QD@jPC#" +QEh)JBfpYF'aPG'8JFh"bC@&NFfKPCA3J+Im!!",!r`!!!#d+B@aTCflr!!!#`!P +XC@Cdr`!!!J!,Bf9ZG'9br`!!!N!+FQPRD(6r!!!#J2m!!!!G'h0[E@8JER9YBQ9 +bD@jR)'C[FQeKG(2r!!!#`2m!!!"c%M!Z-Mrmc*!)r`!!3X!5-#ib2rc-N!Mr!"" +#`")`,M)rr-b3#2m!)%,!%M!Z-Mrmc*!)r`"J3X!5-#ib2rc-N!Mr!&"#`")`,M) +rr-b3#2m!%%V!r`!!!#-KFfpYC5"NBA4P)'&ZC#"dD@eP*h-JCQpbE@&dFrm!!!, +!r`!!!'BB-6)[-bmb-$!d3#d!!!!"(r`!!2m!3&,!'$%b,c-[-M!`0%!Y!!!!!4r +m!!$r!*!!8X!A-5mc,c%j-$4!,3#3"33!!2m!d&,!'M%b1M!i1M!`)%&03#d!N!B +#f2m!%&,!r`!!!"-4FfpYC5"QEh*YG@aKr`!!!X$r!!!!LLF)!6%rri!!N!F@!!N +"!!$r!!!!&$rrJ!#3"rm!!-,!1JJ"-N!!J!#3"`B)!60!!-!!N!F%#J!*!"B!#3) +!#3#3"#JrrUU3"k[r!!$#`#8-!K!1!!N!!!N"%KB!N!3*!3!!!$`rrp99N!C@r`! +!`X$r!(!!BJ#3#a%!!!JX!&dRQ+8ZB`B!!!!1!&dRQ2q!3Li!!!!3!"`RQ!"GD@! +!!!Im!!!!+J"G*jJ!N!Ni!*!04J#3$93!!`!(!!-#Bi!!N!3"!!)!!3!#!Z!!r`# +3"J&N!!!!"3#3%3`!!!$r!!!2S`!9!'32S`#3"3%!!3!*!*!F"'8!!!"5!"3!!!! +%!!S!!`#3"3%!!2rrrr`!D2Qh!'MkdJ"A3)$ZV!!!K&S!D+Ni!'LrT!#3"@LaJ!" +SqY)J%!"Q!'Cr0#mS)'C[ER3JB@jN)(0dH@aP)'&bC5"QEh)JBfpYF'aPG'8JFh" +bC@&NFfKP3)$ZV!!!K&S!9V2F!$eZA!#3"@J!!`"SkjiJ!!"Q!'EK$!!!#UX!!!C +drrm!!!"Sq3%!D9CU!&22c%#!jHS!!+!P3)$LD!!!!!)!!!UV!!!'G2rrrr`!N!9 +4,X`!9alS!&2"Q!"Trrrrr%#!lUa!J1kX!!#%@J"SULB!2AGr!!!!!3#3"@MVRL! +!!'B!CZ%-!!!!r`!!!2m!!!!(!!"%Q`!!!3!!!!%8!!!!&!!!!$)!N!8H!$F!*`# +1!AJ!!3%!N!L1#80XEh0P#R0SC@9d,RGVFc-!!J#30Fqb-`8!N!B"4T3"9!(S!!8 +!N!JE@K9"E'`J9fpbDh-J8(*PCQ9bC@jMCA-!!!![!#d!+!&!!A`!"3#3#"YE'PG +[FQ3J8(*[Bf9cFfpb)&"bC@CPFQ9ZBf9c!!!!*3!Y!(B"3!(+!!8!N!JEA""%FQ& +h)&"bC@CPFQ9ZBf8!!!!3$deTBh*[FfpQG#"AEh*VF`!!!3!!!!%8!!!!&!!!!$) +!8mG3'9J!!!!F!$)!!&088L!!!!!+[r6rr`#3"91p%)L6: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_4.0.wk4 b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_4.0.wk4 new file mode 100644 index 000000000..5adbc7b7d Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_4.0.wk4 differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_2.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_2.0.hqx new file mode 100644 index 000000000..d912b1f3c --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_2.0.hqx @@ -0,0 +1,20 @@ +(This file must be converted with BinHex 4.0) +:#@4KG'%ZGf4L-J""9d4#8&0*-J#3"!Dc!*!%4H!!!!!)!$d!&!(6!Ni!!!@-!!) +!N!F"!*!(!`!(!!!!!J$)!*!&#!!"!'J!!J$-!!-"-!!#!-J!!`(S!!B#5!!(!UJ +!#!-)!!N$D!!+!mJ!#`3S!!`%L!!0"1J!$J9)!!m&U!!3"JJ!%3CS!")'b!!6"bJ +!&!H)!"8(k!!@#%J!&`LS!"J*#!!C#@J!'JR)!"X++!!F#SJ!(3VS!"i,5!!I#kJ +!)!`)!#%-D!!L$-J!)`dS!#30L!!P$HJ!*Jj)!#F1U!!S$`J!+3pS!#S2b!!V%#J +!,"#)!#d3k!!Z%8J!,a'S!$!5#!!a%QJ!-K,)!$-6+!!d%iJ!042S!$B85!!h&+J +!1"8)!$N9D!!k&FJ!1aBS!$`@L!!prrm!2J#3#33!"!"X)J!!"!!8!'`Z!!!%!#3 +!E"i!N2m!N-i#!!#!3N!!J%)&!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`# +!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`# +!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`# +!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`# +!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`#!!Q-!J!*M!)!#B`# +!!Q-!J!*M!)!!N!N)!!!!!3!"!*$a!`!*!!!!)3!$!!N!!!!K!!)!$J#3G`(r!") +%EQ&YC3CZG@eLCA)%C'&dCIm!(!4dEh4[#N!!`!#3"`S!N!Vr!"`%G(9dG3T!!B! +!N!F+3#d!N!8m!!$r!"`%G'PdD3T!!D!!N!F+3#d!N!6e+J!!r`!R*5JJBfpZG'& +TER-J-b"QD@9XC(-JEQ&YC5pZG@eLCA)[C'&dC5Rr!$`k+#"TEL"QD@9XC#!a1L" +dEh4[,(4eG(8XG'PdD5!V)(4SCA0P)'C[GA)JBfpYE@9ZG#Gc)'aTEQ9c+Im!)b% +SD@iJCQPPE'3J-MSJ-b`d,$8JGfPdD#!b)'4TCfPdFbRr!#JQ+'PZ)'CTC@aN)$- +k)$%[-5m`0#`J-5mc-5m`0#`J-6)[-5mi15RrYQF!!!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_3.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_3.0.hqx new file mode 100644 index 000000000..8f7738658 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_3.0.hqx @@ -0,0 +1,266 @@ +(This file must be converted with BinHex 4.0) +:#Q4KG'&1,RGNBM-!39G%3Ne69dX!N!3dr!!!!8CK@`!!!!N!23!%!GF#2J!!!&! +!!J#3$`-!"`!"!*!&"J!"!!%!N%-6"'jKE@8'ER9YBQ9b"'4KG'Ar!*!%(34dEh4 +[#N!!`!#3"`S!N!Vr!*!%(34dGA4e#N!"J!#3"`T!,3!!!!%GPJ!!r`#3""d%G'P +dD3T!!D!!N!F+3#d!N!6e+J!!r`#3"#JP+#"MEfjdB@PZFb!c)'CTC@aNFb"ZB@e +P,fjeE@*PFLpNBA4P+Im!N!3p1LJJD@iJCQPPE'3J-6SJG'pdEbadGA4e,(4TG'N +J+b"dD'9cC5"QEh9b)'0[E@ePER3RFb"XD@jPFbRr!*!%*#%SD@iJCQPPE'3J-MS +J-b`d,$8JGfPdD#!b)'4TCfPdFbRr!*!%+5BSD@iJCQPPE'3J-cSJ-5ma,c!d,#! +a,c-a,c!d,#!a-Lma,cJj+Im!!!!0mJ!)!!-!#3)!!2m!%J!!!!J!!`!*!P-!r`! +54!!M#3!$!!N#8`$r!"*%!%!*!!-!#3*6!2m!%N3!!!J!!`!*!P-!r`!54!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3) +!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J! +!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`! +*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`! +5!!!!#!!$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!! +$!!N#!!$r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$ +r!")!!!!)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!!!! +)!!-!#3)!!2m!%J!!!!J!!`!*!J!!r`!5!!!!#!!$!!N#!!$r!")!N!3#!J#3r`# +3r`#3"`,r!*!%![m!N!3)!*!0#!!"!'J!!J$)!!-"+!!"!'J!!J(S!!B#5!!(!UJ +!#!-)!!N$D!!+!mJ!#`3S!!`%L!!0"1J!$J9)!!m&U!!3"JJ!%3CS!")'b!!6"bJ +!&!H)!"8(k!!@#%J!&`LS!"J*#!!C#@J!'JR)!"X++!!F#SJ!(3VS!"i,5!!I#kJ +!)!`)!#%-D!!L$-J!)`dS!#30L!!P$HJ!*Jj)!#F1U!!S$`J!+3pS!#S2b!!V%#J +!,"#)!#d3k!!Z%8J!,a'S!$!5#!!a%QJ!-K,)!$-6+!!d%iJ!042S!$B85!!h&+J +!1"8)!$N9D!!k&FJ!1aBS!$`@L!!p&ZJ!2KG)!$mAU!"!'!J!34KS!%)Bb!"$'5J +!4"Q)!%8Ck!"''NJ!4aUS!%JE#!"*'fJ!5K[)!%XF+!"-()J!64cS!%iG5!"2(DJ +!8"i)!&%HD!"5(XJ!8amS!&3IL!"9(qJ!9L")!&FJU!"B)3J!@5&S!&SKb!"E)LJ +!A#+)!&dLk!"H)dJ!Ab1S!'!N#!"K*'J!BL6)!'-P+!"N*BJ!C5AS!'BQ5!"R*UJ +!D#F)!'NRD!"U*mJ!DbJS!'`SL!"Y+1J!ELP)!'mTU!"`+JJ!F5TS!()Ub!"c+bJ +!G#Z)!(8Vk!"f,%J!GbbS!(JY#!"j,@J!HLh)!(XZ+!"m,SJ!I5lS!(i[5!"r,kJ +!J$!)!)%`D!##--J!Jc%S!)3aL!#&-HJ!KM*)!)FbU!#)-`J!L60S!)Scb!#,0#J +!M$5)!)ddk!#108J!Mc@S!*!!0JJ!N6CS!*)fb!#60bJ!P$H)!*8hk!#@1%J!PcL +S!*Jj#!#C1@J!QMR)!*Xk+!#F1SJ!R6VS!*il5!#I1kJ!S$`)!+%mD!#L2-J!Scd +S!+3pL!#P2HJ!TMj)!+FqU!#S2`J!U6pS!+Srb!#V3#J!V%#)!+e!k!#Z38J!Vd' +S!,"##!#a3QJ!XN,)!,0$+!#d3iJ!Y82S!,C%5!#h4+J!Z%8)!,P&D!#k4FJ!ZdB +S!,a'L!#p4ZJ![NG)!,p(U!$!5!J!`8KS!-*)b!$$55J!a%Q)!-9*k!$'5NJ!adU +S!-K,#!$*5fJ!bN[)!-Y-+!$-6)J!c8cS!-j05!$26DJ!d%i)!0&1D!$56XJ!ddm +S!042L!$96qJ!eP")!0G3U!$B83J!f9&S!0T4b!$E8LJ!h&+)!0e5k!$H8dJ!he1 +S!1"8#!$K9'J!iP6)!109+!$N9BJ!j9AS!1C@5!$R9UJ!k&F)!1PAD!$U9mJ!keJ +S!1aBL!$Y@1J!lPP)!1pCU!$`@JJ!m9TS!2*Db!$c@bJ!p&Z)!29Ek!$fA%J!peb +S!2KG#!$jA@J!qPh)!2YH+!$mASJ!r9lS!2jI5!$rAkJ"!'!)!!$rr`!!39G%3J# +3"3J!!!!"!!%!!`!*!!!!r`%!kji!8mr-!'N!"!!"%i!!D!!!($!29@jdDA4XC@3 +J4QpbE5!a!*!48m'J!&2$1!"6`DJ!8m'B!!F!"`,h!NF!N!F"!*!SF!!!!`!*r`# +3"!X!@J!G!1F!#`!,!"d!@`!!F!!!!`!*r`#3"#%!@J!c!1F!)3!,!$-!@`!!F!! +!!`!*r`#3"$F!@J"*!1F!0`!,!%N!@`!!3!!!!`!*r`#3"%d!@J"I!1F!63!,!&m +!@`!!3!!!!`!*r`#3"'-!@J"e!1F!B`!,!(8!@`!!3!!!!`!*r`#3"(N!@J#,!1F +!H3!,!)X!@`!!3!!!!`!*r`#3")m!@J#K!1F!M`!,!+%!@`!!3!!!!`!*r`#3"+8 +!@J#h!1F!T3!,!,F!@`!!3!!!!`!*r`#3",X!@J$0!1F!Z`!,!-d!@`!!3!!!!`! +*r`#3"0%!@J$M!1F!d3!,!1-!@`!!3!!!!`!*r`#3"1F!@J$j!1F!j`!,!2N!@`! +!3!!!!`!*r`#3"2d!@J%2!1F!r3!,!3m!@`!!3!!!!`!*r`!!!!%6!&S"*3$R!4- +!#`%P!&X!!%!!!!-!#Im!!!!"+3"D!6X!j`%T!!X"1`"E!!"!!!!$!!Rr!!!!!6m +!@J&4!1F"2`!,!9%!@`!!3!!!!`!*r`!!!!&9!&S"C`$R!98!#`&R!&X!!%!!!!- +!#Im!!!!"D`"D!Ad!j`&V!!X"I3"E!!"!!!!$!!Rr!!!!!B%!@J'6!1F"J3!,!C- +!@`!!3!!!!`!*r`!!!!'A!&S"U3$R!CF!#`'T!&X!!%!!!!-!#Im!!!!"V3"D!Em +!j`'Y!!X"[`"E!!"!!!!$!!Rr!!!!!F-!@J(9!1F"``!,!G8!@`!!3!!!!`!*r`! +!!!(C!&S"k`$R!GN!#`(V!&X!!%!!!!-!#Im!!!!"l`"D!J%!j`([!!X#!3"E!!" +!!!!$!!Rr!!!!!J8!@J)A!1F#"3!,!KF!@`!!3!!!!`!*r`!!!!)E!&S#,3$R!KX +!#`)Y!&X!!%!!!!-!#Im!!!!#-3"D!N-!j`)a!!X#3`"E!!"!!!!$!!Rr!!!!!NF +!@J*C!1F#4`!,!PN!@`!!3!!!!`!*r`!!!!*G!&S#E`$R!Pd!#`*[!&X!!%!!!!- +!#Im!!!!#F`"D!S8!j`*c!!X#K3"E!!"!!!!$!!Rr!!!!!SN!@J+E!1F#L3!,!TX +!@`!!3!!!!`!*r`!!!!+I!&S#X3$R!Tm!#`+a!&X!!%!!!!-!#Im!!!!#Y3"D!XF +!j`+e!!X#a`"E!!"!!!!$!!Rr!!!!!XX!@J,G!1F#b`!,!Yd!@`!!3!!!!`!*r`! +!!!,K!&S#m`$R!Z%!#`,c!&X!!%!!!!-!#Im!N!3,!6S!(3((!!X!k`!G!6X!!%! +!!!-!#Im!N!3K!6S!-`((!#%!k`!c!6X!!%!!!!-!#Im!N!3h!6S!53((!$F!k`" +*!6X!!%!!!!-!#Im!N!40!6S!A`((!%d!k`"I!6X!!%!!!!-!#Im!N!4M!6S!G3( +(!'-!k`"e!6X!!%!!!!-!#Im!N!4j!6S!L`((!(N!k`#,!6X!!%!!!!-!#Im!N!5 +2!6S!S3((!)m!k`#K!6X!!%!!!!-!#Im!N!5P!6S!Y`((!+8!k`#h!6X!!%!!!!- +!#Im!N!5l!6S!c3((!,X!k`$0!6X!!%!!!!-!#Im!N!64!6S!i`((!0%!k`$M!6X +!!%!!!!-!#Im!N!6R!6S!q3((!1F!k`$j!6X!!%!!!!-!#Im!N!6p!6S"$`((!2d +!k`%2!6X!!%!!!!-!#Im!!!!"%`%k!58"a`%6!1X"*3%l!!"!!!!$!!Rr!!!!!5N +"1J%l!FF"+3$V!6X"1`!!3!!!!`!*r`!!!!%r!6S"83((!6m!k`&4!6X!!%!!!!- +!#Im!!!!"93%k!@F"a`&9!1X"C`%l!!"!!!!$!!Rr!!!!!@X"1J&p!FF"D`$V!Ad +"1`!!3!!!!`!*r`!!!!'"!6S"N`((!B%!k`'6!6X!!%!!!!-!#Im!!!!"P`%k!DN +"a`'A!1X"U3%l!!"!!!!$!!Rr!!!!!Dd"1J'r!FF"V3$V!Em"1`!!3!!!!`!*r`! +!!!($!6S"e3((!F-!k`(9!6X!!%!!!!-!#Im!!!!"f3%k!HX"a`(C!1X"k`%l!!" +!!!!$!!Rr!!!!!Hm"1J)"!FF"l`$V!J%"1`!!3!!!!`!*r`!!!!)&!6S#&`((!J8 +!k`)A!6X!!%!!!!-!#Im!!!!#'`%k!Ld"a`)E!1X#,3%l!!"!!!!$!!Rr!!!!!M% +"1J*$!FF#-3$V!N-"1`!!3!!!!`!*r`!!!!*(!6S#@3((!NF!k`*C!6X!!%!!!!- +!#Im!!!!#A3%k!Qm"a`*G!1X#E`%l!!"!!!!$!!Rr!!!!!R-"1J+&!FF#F`$V!S8 +"1`!!3!!!!`!*r`!!!!+*!6S#Q`((!SN!k`+E!6X!!%!!!!-!#Im!!!!#R`%k!V% +"a`+I!1X#X3%l!!"!!!!$!!Rr!!!!!V8"1J,(!FF#Y3$V!XF"1`!!3!!!!`!*r`! +!!!,,!6S#h3((!XX!k`,G!6X!!%!!!!-!#Im!!!!#i3%k![-"a`,K!1X#m`%l!!" +!!!!$!!Rr!*!%#`)D!"d#T`!,!FX!(3)E!!"!!!!$!!Rr!*!%)3)D!$-#T`!K!FX +!-`)E!!"!!!!$!!Rr!*!%0`)D!%N#T`!h!FX!53)E!!"!!!!$!!Rr!*!%63)D!&m +#T`"0!FX!A`)E!!"!!!!$!!Rr!*!%B`)D!(8#T`"M!FX!G3)E!!"!!!!$!!Rr!*! +%H3)D!)X#T`"j!FX!L`)E!!"!!!!$!!Rr!*!%M`)D!+%#T`#2!FX!S3)E!!"!!!! +$!!Rr!*!%T3)D!,F#T`#P!FX!Y`)E!!"!!!!$!!Rr!*!%Z`)D!-d#T`#l!FX!c3) +E!!"!!!!$!!Rr!*!%d3)D!1-#T`$4!FX!i`)E!!"!!!!$!!Rr!*!%j`)D!2N#T`$ +R!FX!q3)E!!"!!!!$!!Rr!*!%r3)D!3m#T`$p!FX"$`)E!!"!!!!$!!Rr!!!!!4- +#'J%P!UF"%`(,!58#'`!!3!!!!`!*r`!!!!%T!KS"1`+R!5N"b`%l!KX!!%!!!!- +!#Im!!!!"2`)D!9%#T`%r!FX"83)E!!"!!!!$!!Rr!!!!!98#'J&R!UF"93(,!@F +#'`!!3!!!!`!*r`!!!!&V!KS"I3+R!@X"b`&p!KX!!%!!!!-!#Im!!!!"J3)D!C- +#T`'"!FX"N`)E!!"!!!!$!!Rr!!!!!CF#'J'T!UF"P`(,!DN#'`!!3!!!!`!*r`! +!!!'Y!KS"[`+R!Dd"b`'r!KX!!%!!!!-!#Im!!!!"``)D!G8#T`($!FX"e3)E!!" +!!!!$!!Rr!!!!!GN#'J(V!UF"f3(,!HX#'`!!3!!!!`!*r`!!!!([!KS#!3+R!Hm +"b`)"!KX!!%!!!!-!#Im!!!!#"3)D!KF#T`)&!FX#&`)E!!"!!!!$!!Rr!!!!!KX +#'J)Y!UF#'`(,!Ld#'`!!3!!!!`!*r`!!!!)a!KS#3`+R!M%"b`*$!KX!!%!!!!- +!#Im!!!!#4`)D!PN#T`*(!FX#@3)E!!"!!!!$!!Rr!!!!!Pd#'J*[!UF#A3(,!Qm +#'`!!3!!!!`!*r`!!!!*c!KS#K3+R!R-"b`+&!KX!!%!!!!-!#Im!!!!#L3)D!TX +#T`+*!FX#Q`)E!!"!!!!$!!Rr!!!!!Tm#'J+a!UF#R`(,!V%#'`!!3!!!!`!*r`! +!!!+e!KS#a`+R!V8"b`,(!KX!!%!!!!-!#Im!!!!#b`)D!Yd#T`,,!FX#h3)E!!" +!!!!$!!Rr!!!!!Z%#'J,c!UF#i3(,![-#'`!!3!!!!`!*r`#3"!d!A!!I!1N!$3! +0!"m!A3!!3!!!!`!*r`#3"#-!A!!e!1N!)`!0!$8!A3!!3!!!!`!*r`#3"$N!A!" +,!1N!13!0!%X!A3!!3!!!!`!*r`#3"%m!A!"K!1N!6`!0!'%!A3!!3!!!!`!*r`# +3"'8!A!"h!1N!C3!0!(F!A3!!3!!!!`!*r`#3"(X!A!#0!1N!H`!0!)d!A3!!3!! +!!`!*r`#3"*%!A!#M!1N!N3!0!+-!A3!!3!!!!`!*r`#3"+F!A!#j!1N!T`!0!,N +!A3!!3!!!!`!*r`#3",d!A!$2!1N![3!0!-m!A3!!3!!!!`!*r`#3"0-!A!$P!1N +!d`!0!18!A3!!3!!!!`!*r`#3"1N!A!$l!1N!k3!0!2X!A3!!3!!!!`!*r`#3"2m +!A!%4!1N!r`!0!4%!A3!!3!!!!`!*r`!!!!%9!&`"*`$T!48!$3%R!&d!!%!!!!- +!#Im!!!!"+`"F!6d!k3%V!!d"23"G!!"!!!!$!!Rr!!!!!8%!A!&6!1N"33!0!9- +!A3!!3!!!!`!*r`!!!!&A!&`"D3$T!9F!$3&T!&d!!%!!!!-!#Im!!!!"E3"F!Am +!k3&Y!!d"I`"G!!"!!!!$!!Rr!!!!!B-!A!'9!1N"J`!0!C8!A3!!3!!!!`!*r`! +!!!'C!&`"U`$T!CN!$3'V!&d!!%!!!!-!#Im!!!!"V`"F!F%!k3'[!!d"`3"G!!" +!!!!$!!Rr!!!!!F8!A!(A!1N"a3!0!GF!A3!!3!!!!`!*r`!!!!(E!&`"l3$T!GX +!$3(Y!&d!!%!!!!-!#Im!!!!"m3"F!J-!k3(a!!d#!`"G!!"!!!!$!!Rr!!!!!JF +!A!)C!1N#"`!0!KN!A3!!3!!!!`!*r`!!!!)G!&`#,`$T!Kd!$3)[!&d!!%!!!!- +!#Im!!!!#-`"F!N8!k3)c!!d#43"G!!"!!!!$!!Rr!!!!!NN!A!*E!1N#53!0!PX +!A3!!3!!!!`!*r`!!!!*I!&`#F3$T!Pm!$3*a!&d!!%!!!!-!#Im!!!!#G3"F!SF +!k3*e!!d#K`"G!!"!!!!$!!Rr!!!!!SX!A!+G!1N#L`!0!Td!A3!!3!!!!`!*r`! +!!!+K!&`#X`$T!U%!$3+c!&d!!%!!!!-!#Im!!!!#Y`"F!XN!k3+h!!d#b3"G!!" +!!!!$!!Rr!!!!!Xd!A!,I!1N#c3!0!Ym!A3!!3!!!!`!*r`!!!!,M!&`#p3$T!Z- +!$3,e!&d!!%!!!!-!#Im!N!30!6`!(`(*!!d!l3!I!6d!!%!!!!-!#Im!N!3M!6` +!03(*!#-!l3!e!6d!!%!!!!-!#Im!N!3j!6`!5`(*!$N!l3",!6d!!%!!!!-!#Im +!N!42!6`!B3(*!%m!l3"K!6d!!%!!!!-!#Im!N!4P!6`!G`(*!'8!l3"h!6d!!%! +!!!-!#Im!N!4l!6`!M3(*!(X!l3#0!6d!!%!!!!-!#Im!N!54!6`!S`(*!*%!l3# +M!6d!!%!!!!-!#Im!N!5R!6`!Z3(*!+F!l3#j!6d!!%!!!!-!#Im!N!5p!6`!c`( +*!,d!l3$2!6d!!%!!!!-!#Im!N!66!6`!j3(*!0-!l3$P!6d!!%!!!!-!#Im!N!6 +T!6`!q`(*!1N!l3$l!6d!!%!!!!-!#Im!N!6r!6`"%3(*!2m!l3%4!6d!!%!!!!- +!#Im!!!!"&3%m!5F"b3%9!1d"*`%p!!"!!!!$!!Rr!!!!!5X"2!%p!FN"+`$Y!6d +"23!!3!!!!`!*r`!!!!&"!6`"8`(*!8%!l3&6!6d!!%!!!!-!#Im!!!!"9`%m!@N +"b3&A!1d"D3%p!!"!!!!$!!Rr!!!!!@d"2!&r!FN"E3$Y!Am"23!!3!!!!`!*r`! +!!!'$!6`"P3(*!B-!l3'9!6d!!%!!!!-!#Im!!!!"Q3%m!DX"b3'C!1d"U`%p!!" +!!!!$!!Rr!!!!!Dm"2!("!FN"V`$Y!F%"23!!3!!!!`!*r`!!!!(&!6`"e`(*!F8 +!l3(A!6d!!%!!!!-!#Im!!!!"f`%m!Hd"b3(E!1d"l3%p!!"!!!!$!!Rr!!!!!I% +"2!)$!FN"m3$Y!J-"23!!3!!!!`!*r`!!!!)(!6`#'3(*!JF!l3)C!6d!!%!!!!- +!#Im!!!!#(3%m!Lm"b3)G!1d#,`%p!!"!!!!$!!Rr!!!!!M-"2!*&!FN#-`$Y!N8 +"23!!3!!!!`!*r`!!!!**!6`#@`(*!NN!l3*E!6d!!%!!!!-!#Im!!!!#A`%m!R% +"b3*I!1d#F3%p!!"!!!!$!!Rr!!!!!R8"2!+(!FN#G3$Y!SF"23!!3!!!!`!*r`! +!!!+,!6`#R3(*!SX!l3+G!6d!!%!!!!-!#Im!!!!#S3%m!V-"b3+K!1d#X`%p!!" +!!!!$!!Rr!!!!!VF"2!,*!FN#Y`$Y!XN"23!!3!!!!`!*r`!!!!,0!6`#h`(*!Xd +!l3,I!6d!!%!!!!-!#Im!!!!#i`%m![8"b3,M!1d#p3%p!!"!!!!$!!Rr!*!%$3) +F!"m#U3!0!Fd!(`)G!!"!!!!$!!Rr!*!%)`)F!$8#U3!M!Fd!03)G!!"!!!!$!!R +r!*!%13)F!%X#U3!j!Fd!5`)G!!"!!!!$!!Rr!*!%6`)F!'%#U3"2!Fd!B3)G!!" +!!!!$!!Rr!*!%C3)F!(F#U3"P!Fd!G`)G!!"!!!!$!!Rr!*!%H`)F!)d#U3"l!Fd +!M3)G!!"!!!!$!!Rr!*!%N3)F!+-#U3#4!Fd!S`)G!!"!!!!$!!Rr!*!%T`)F!,N +#U3#R!Fd!Z3)G!!"!!!!$!!Rr!*!%[3)F!-m#U3#p!Fd!c`)G!!"!!!!$!!Rr!*! +%d`)F!18#U3$6!Fd!j3)G!!"!!!!$!!Rr!*!%k3)F!2X#U3$T!Fd!q`)G!!"!!!! +$!!Rr!*!%r`)F!4%#U3$r!Fd"%3)G!!"!!!!$!!Rr!!!!!48#(!%R!UN"&3(0!5F +#(3!!3!!!!`!*r`!!!!%V!K`"23+T!5X"c3%p!Kd!!%!!!!-!#Im!!!!"33)F!9- +#U3&"!Fd"8`)G!!"!!!!$!!Rr!!!!!9F#(!&T!UN"9`(0!@N#(3!!3!!!!`!*r`! +!!!&Y!K`"I`+T!@d"c3&r!Kd!!%!!!!-!#Im!!!!"J`)F!C8#U3'$!Fd"P3)G!!" +!!!!$!!Rr!!!!!CN#(!'V!UN"Q3(0!DX#(3!!3!!!!`!*r`!!!!'[!K`"`3+T!Dm +"c3("!Kd!!%!!!!-!#Im!!!!"a3)F!GF#U3(&!Fd"e`)G!!"!!!!$!!Rr!!!!!GX +#(!(Y!UN"f`(0!Hd#(3!!3!!!!`!*r`!!!!(a!K`#!`+T!I%"c3)$!Kd!!%!!!!- +!#Im!!!!#"`)F!KN#U3)(!Fd#'3)G!!"!!!!$!!Rr!!!!!Kd#(!)[!UN#(3(0!Lm +#(3!!3!!!!`!*r`!!!!)c!K`#43+T!M-"c3*&!Kd!!%!!!!-!#Im!!!!#53)F!PX +#U3**!Fd#@`)G!!"!!!!$!!Rr!!!!!Pm#(!*a!UN#A`(0!R%#(3!!3!!!!`!*r`! +!!!*e!K`#K`+T!R8"c3+(!Kd!!%!!!!-!#Im!!!!#L`)F!Td#U3+,!Fd#R3)G!!" +!!!!$!!Rr!!!!!U%#(!+c!UN#S3(0!V-#(3!!3!!!!`!*r`!!!!+h!K`#b3+T!VF +"c3,*!Kd!!%!!!!-!#Im!!!!#c3)F!Ym#U3,0!Fd#h`)G!!"!!!!$!!Rr!!!!!Z- +#(!,e!UN#i`(0![8#(3!!3!!!!`!*r`#3"!m!AJ!K!1X!$`!2!#%!A`!!3!!!!`! +*r`#3"#8!AJ!h!1X!*3!2!$F!A`!!3!!!!`!*r`#3"$X!AJ"0!1X!1`!2!%d!A`! +!3!!!!`!*r`#3"&%!AJ"M!1X!83!2!'-!A`!!3!!!!`!*r`#3"'F!AJ"j!1X!C`! +2!(N!A`!!3!!!!`!*r`#3"(d!AJ#2!1X!I3!2!)m!A`!!3!!!!`!*r`#3"*-!AJ# +P!1X!N`!2!+8!A`!!3!!!!`!*r`#3"+N!AJ#l!1X!U3!2!,X!A`!!3!!!!`!*r`# +3",m!AJ$4!1X![`!2!0%!A`!!3!!!!`!*r`#3"08!AJ$R!1X!e3!2!1F!A`!!3!! +!!`!*r`#3"1X!AJ$p!1X!k`!2!2d!A`!!3!!!!`!*r`!!!!%"!&i"%`$V!3%!$`% +6!&m!!%!!!!-!#Im!!!!"&`"H!5N!k`%A!!m"+3"I!!"!!!!$!!Rr!!!!!5d!AJ% +r!1X",3!2!6m!A`!!3!!!!`!*r`!!!!&$!&i"93$V!8-!$`&9!&m!!%!!!!-!#Im +!!!!"@3"H!@X!k`&C!!m"D`"I!!"!!!!$!!Rr!!!!!@m!AJ'"!1X"E`!2!B%!A`! +!3!!!!`!*r`!!!!'&!&i"P`$V!B8!$`'A!&m!!%!!!!-!#Im!!!!"Q`"H!Dd!k`' +E!!m"V3"I!!"!!!!$!!Rr!!!!!E%!AJ($!1X"X3!2!F-!A`!!3!!!!`!*r`!!!!( +(!&i"f3$V!FF!$`(C!&m!!%!!!!-!#Im!!!!"h3"H!Hm!k`(G!!m"l`"I!!"!!!! +$!!Rr!!!!!I-!AJ)&!1X"m`!2!J8!A`!!3!!!!`!*r`!!!!)*!&i#'`$V!JN!$`) +E!&m!!%!!!!-!#Im!!!!#(`"H!M%!k`)I!!m#-3"I!!"!!!!$!!Rr!!!!!M8!AJ* +(!1X#03!2!NF!A`!!3!!!!`!*r`!!!!*,!&i#A3$V!NX!$`*G!&m!!%!!!!-!#Im +!!!!#B3"H!R-!k`*K!!m#F`"I!!"!!!!$!!Rr!!!!!RF!AJ+*!1X#G`!2!SN!A`! +!3!!!!`!*r`!!!!+0!&i#R`$V!Sd!$`+I!&m!!%!!!!-!#Im!!!!#S`"H!V8!k`+ +M!!m#Y3"I!!"!!!!$!!Rr!!!!!VN!AJ,,!1X#Z3!2!XX!A`!!3!!!!`!*r`!!!!, +2!&i#i3$V!Xm!$`,K!&m!!%!!!!-!#Im!N!32!6i!)3(,!!m!l`!K!6m!!%!!!!- +!#Im!N!3P!6i!0`(,!#8!l`!h!6m!!%!!!!-!#Im!N!3l!6i!63(,!$X!l`"0!6m +!!%!!!!-!#Im!N!44!6i!B`(,!&%!l`"M!6m!!%!!!!-!#Im!N!4R!6i!H3(,!'F +!l`"j!6m!!%!!!!-!#Im!N!4p!6i!M`(,!(d!l`#2!6m!!%!!!!-!#Im!N!56!6i +!T3(,!*-!l`#P!6m!!%!!!!-!#Im!N!5T!6i!Z`(,!+N!l`#l!6m!!%!!!!-!#Im +!N!5r!6i!d3(,!,m!l`$4!6m!!%!!!!-!#Im!N!69!6i!j`(,!08!l`$R!6m!!%! +!!!-!#Im!N!6V!6i!r3(,!1X!l`$p!6m!!%!!!!-!#Im!!!!"!3%q!4-"b`%"!1m +"%`%r!!"!!!!$!!Rr!!!!!4F"2J%T!FX"&`$[!5N"2`!!3!!!!`!*r`!!!!%Y!6i +"2`(,!5d!l`%r!6m!!%!!!!-!#Im!!!!"3`%q!98"b`&$!1m"93%r!!"!!!!$!!R +r!!!!!9N"2J&V!FX"@3$[!@X"2`!!3!!!!`!*r`!!!!&[!6i"J3(,!@m!l`'"!6m +!N!3"AJ!2!!!!5!")!*!%![!#32rarqi$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y +!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3% +!(J!C!"i!+J#3"`%!!3#3`3-!#3!!!Q3$'!!!!#%!N"!"C!!!!!8!N"%-!!!!r`! +!$k-!&3"N$k-!N!8"!!%!#!#3(!4R!!!!$!!8!!!!!`!-!!-!N!8"!!!!63#3%3` +!D+P%!'LP@!!!!%-!!"Qf3)#9E%#!UZ`!N!84!!$rr`!#!!S#!*!%%!)i!"B!&J! +8!'LTG!!6D5J!!%K8!'LP4!"6rq`!!!%!!!3J"!!+-8`!N!8&!JK!J+Nb!*!(D+2 +N!!!C@!!!3)$ZV!!!K&S!D+9X!$P(A!#3#@MVRL!!!'C!J1kX!!#%@J"STB`!18G +J!*!*D1ZH)!!!CJ"Qi3`!!$6m!!!'QIrrrrX!N!9Skji!8mr-!'MVRJ"AMr3!D+9 +m!&H3!,i!!!DCrrrrq`!!!!%!8m(3!!$N%!!!!3!!!!%8!!!!&!!!!$*"3e4"39" +36!%!N"F+C'&dB8iZGf4L-`!#!*!ecl+9bJ#3"J&'!*!02#8"3PGVFd*AC')$!*! +H-58"4PG59%CA,P8"!*!H'#8"6&G848e"3e)'!*!B%!p0D@0bEh0[CR3J9fpbDh- +!!!%!!!!"&!!!!"3!!!!b!&2(8"Qf!!!!(!!b!!"69&)J!!!!#Vrdrrm!N!96[@c +JrJ: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_4.0.wdb b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_4.0.wdb new file mode 100644 index 000000000..8b9a6d2ec Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libmwaw/pass/MicrosoftWorks_DB_4.0.wdb differ diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/Multiplan_1.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/Multiplan_1.hqx new file mode 100644 index 000000000..48d0fe228 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/Multiplan_1.hqx @@ -0,0 +1,46 @@ +(This file must be converted with BinHex 4.0) +:"f9YF(4j69!!69"#6P"-38i"!!!!"j`!!!&e@fm4U`!!%qJ!N!F#!N`!'!!1!Q3 +$FJ!1h03!!`!1!*3"TM-0!!J9AKR4!eiCh@&JB&i@N!!!Cf"JB(q2A`2SHM"KB'! +6Iem$k(Z3!!"q')m@KAiGMaD'IKGH%(Z3!!"q+Bm6HM%8DYF@IiF8Gf!@Ifq&IMb +3!!"q3*!!!(j%MhiGF)9q'('&INq3!!"q8ipq,(+&ILGcKAjHMc&qBSm8HaCX&)8 +8IN*dKAipE"+&B0d!$K&X*LS5`@!4E#+&X,9R%@`JV(UYIa&9%40rdI)493d4Ie8 +-d*B494!493r3I@%4@"&CIKKAf"&9%(V@N!!!IVD2,4#jBK&9$4D&%983&SCK%9S +4@a#3!!"S$@*JN!!!$9Gh'"C[K3fQ&SF9Bmm1$9Ch*"C`K3e@Gc!@FB89DXm($9G +h+KCbK3eAG`kj'JfRb"CRB'"JMbaK%9`4A3pYN!!!B*!%MaD(CpeqQhPl%981%@` +JKApR%@`DV(UYH@&R%@`LV(UYIUr4443494&SeASV$PB4E"D&$PJ4E"b&$PF4E"L +&Ia&9$"&@hmm&%9E5IK)1@4&X(S9r%982%9IIc`849p*q%K&9#a&X'S9qBE(r"f$ +G!"%3E#SS%'`Z*a(!B4"X*)8394)393VIdBPK%&8)%&8*%&85N!!!D"F+B@#3!!! +-GdBXI`ah5`pSeATY+`jh!,ie$K"X*+akVAiF$lP9$(G,%Yr36Q!U$3r4)fJ,BQ# +3!!!0&G%9#kFpV6d,Ik9q#&Gh@Ri09hG82Ddp0!Pjf@!U$3r4#QJ+BQ#3!!!d#AR +bD"--GdYJN!!!$(G,&)82&G%#$l89hAPZB0d!!!MFe`!"!!J!"K8KL0d!&3"D!!) +!!"PN!!+NcJ$,!!S%8M&$-31,AJ!$Lei!!)YH!!1-TJ!#T0B!!iYH!!+Pl!,m!!B +L1J!#DiJ"![rr"!!LJJ!#Di3"!rrr"!!LbJ!#Di!""2rr"!!M%J!#Dh`""Irr"!! +M@J!#DhJ""[rr"!!MSJ!#Dh3""rrr)!')qJ#3"!%!rrmJ!BP#!*!%!3(rrb!"LKJ +!!!!-!"J!@3!-!"N!!U9Z!!+PC!!(!!B!$!!B!GN!$!'C!!)!!!!'!!U!"J!!!!1 +-T[rdrqF!!SRN!!)!N!F$!!+PS!!#TDJ!!J!#TDS!!U@d!!+PXJ!!!!+)h!!1!!+ +)i!!!!!%!!3#3"(rr!%F!$!(R!3S!N"i"!*"83!#!!-!"!!&!!B!"`!)!!N!#J!, +!!`!$3!1!!m!%!!4!")!%`!8!"8!&J!A!"J!'3!D!"X!(!!G!"i!(`!J!#%!)J!M +!#3!*3!Q!#F!+!!T!#S!+`!X!#d!,J![!$!!-3!b!$-!0!!e!$B!0`!i!$N!1J!l +!$`!23!q!$m"rr`!!!Pd&03!!!"8!@J!#!!!CC!!#T-i!b`!+"&)a3c%$Lei!!iY +H!!#,AJ!$M+B!!U6@!!1,AJ!#TH`#r!!')MS!!QZ)!3,rr`3!)S)!!QZ%!32rr`3 +!)XS!!QZ!!36rr`3!)a)!!QYm!3Arr`3!)eS!!QYi!3Err`3!)k)!!QYd!*!T5!" +)!$B!0J!"!!%!!!!$!!N!&3"D!!)!!"PN!!+NcJ$,!!S%8M&$-31,AJ!$Lei!!)Y +H!!1-TJ!#T0B!!iYH!!+Pl!,m!!BL1J!#DiJ"![rr"!!LJJ!#Di3"!rrr"!!LbJ! +#Di!""2rr"!!M%J!#Dh`""Irr"!!M@J!#DhJ""[rr"!!MSJ!#Dh3""rrr)!')qJ# +3"!%!rrmJ!BP#!*!%!3(rrb!"LKJ!!!!-!"J!@3!-!"N!!U9Z!!+PC!!(!!B!$!! +B!GN!$!'C!!)!!!!'!!U!"J!!!!1-T[rdrqF!!SRN!!)!N!F$!!+PS!!#TDJ!!J! +#TDS!!U@d!!+PXJ!!!!+)h!!1!!+)i!!!!"8!@J!#!!!CC!!#T-i!b`!+"&)a3c% +$Lei!!iYH!!#,AJ!$M+B!!U6@!!1,AJ!#TH`#r!!')MS!!QZ)!3,rr`3!)S)!!QZ +%!32rr`3!)XS!!QZ!!36rr`3!)a)!!QYm!3Arr`3!)eS!!QYi!3Err`3!)k)!!QY +d!3Irrb!"L2S!N!3"!2rr)!'*3J#3"!%"rrmJ!BSB!!!!$!!B!&N!$!!C!!+PEJ! +#T@3!"`!'!!`!'!(C!!`"Q3!#!!!!"J!+J!B!!!!$M+Erp2rR!!+*j!!#!*!(!`! +#TD!!!U@S!!)!!U@U!!+PY!!#TE)!!!!#L0`!$J!#L1!!N!ErN!3!N!X#!!%!!!! +m!$`!2J!q!$i!!J"!!%!!3J#3"IX"f!!-!"N!q`(B!*!&&!!(rqIrp-!!N!C9!&8 +!$!!C!&8!93#3"3F!!IrRrr6!!!!!)!'Q+N'8!!!"!!!!!5m!!!![!!!!4J!#TDJ +!!J!#TDS!!U@d!!+PXJ!!!!+)h!!1!!+)i!!!"f9YF(4j69!#!!!!69"#6P"-38i +!N!S0*!!!69"#6P"-38i!N"M@DUXH!!!(R!!!!A8LbJ!#Di!""2rr"!!M%J!#Dh` +""Irr"!!M@J!#DhJ""[rr"!!MSJ!#Dh3""rrr)!')qJ#3"!%!rrmJ!BP#!*!%!3( +rrb!"LKJ!!!!-!"J!@3!-!"N!!U9Z!!+PC!!(!!B!$!!B!GN!$!'C!!)!!!!'!!U +!"J!!!!1-T[rdrqF!!J!!!!F'4'pXE'&b!!!!)#iX,#3!!0!!!#rrB#""63!J8%d +!1J#3#J%!!!%!!!!",`!!!#m!!!"'!!*VQ!03!!!!(!"'!!&69&)J!!!!%NP19%` +!!!!H!9lrr`#3#[rr)!!!#`!#L23p+3: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/Wingz_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/Wingz_1.0.hqx new file mode 100644 index 000000000..7fcbae307 --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/Wingz_1.0.hqx @@ -0,0 +1,28 @@ +(This file must be converted with BinHex 4.0) +:#90SC@9d,RGRHJ"A@P069dj(@J%!!!!&f!#3"(JV9dj(@PGD8e-`-6%`!!#!FJ% +!N!SFah%Fah&X2`!!!"6rrrm%!!!!!Iq3"!!!!!(rrrm""3!8!"3!!!$qr`#3"J) +%!!!!&2rrr`3!!!!"rj!%!!!!!Irrr`%&!"3!&!!!!2lr!*!'!J3!!!!8rrrr"!! +!!!(rN!3!!!!"rrrr!38!&!!8!*!%&2rrr`%!!!!"rrrr!38!N!3"rrrr!38!N!3 +%rrrr!38!N!3(rrrr!38!N!8+!3C(C@jPGQ%!N!JG!!!!"!#3#`a"99428d&@45j +A5eS!N!6`)`!b!*!-$!!$!!3*!*!%C!!!!2pr!!$rI`#3)2lr!*!'r[m!N!Eqr`# +3"[lr!*!'r[m!N!Ba!!%!!!!%!!F!N!Iqrrlr!*!)"!!#!*!*!3!!!!%!N!d&!!X +!E`"T!*!M!B!3!!!!rrm-!`3!b!8&!0`+rhr)"3+!#!!!!2rrm!$rIr!!!i!!N!3 +%J!#3"!9!#!!!!!J!"3X!!`!!#%!2!!!!!3#3""J!N!E`2rm)3!i!!3!"!*!%'3C +K)(4PH(6r#%!B!!)!!3#3""J!N!E`2bd!N!B)32m)3"i!!`!"!!!!""J!N!E`2b` +!N!B)3!%!N!3Zr`P!)!!!!"F!!!!+!*!(&2rrr`(r!!!"!*!%"NGPEQ9fB3P!)!! +"!!%!!!!+!!%!N!88rrrr!Im!!!%!N!3'4f9ZCACK#8!J!!)!!3!!!!S!!J#3"46 +rrrm"r`!!!3#3"!C(C@jPGQ%*3#!!!`!"!!!!#J!%!*!&&2rrr`(r!!!"!*!%"NG +PEQ9fB3P!)!!%!!%!!!!+!*!(&2rrr`(r!!!"r`!!!!C(C@jPGQ%*3#!!"3!"!!! +!#J#3"a6rrrm"r`!!!3$r!!!'4f9ZCACK#8!J!!B!!3!!!!S!N!F8rrrr!Im!!!( +r!2m!"NGPEQ9fB3a!9`#3"38!!`!5!!!!rrm-G'9iG#KZEh*YB@`T!J!5!!%!rrm +%BQpXC!)!%J!#!2rr"QPdB@aTB`-!%J!$!2rr#A9ZC'9bE'PZC3!$!")!!!$rr`T +LD@FJBfpXG@eZ$%!U!!%!!!!#!!)!%J!%!2rr!h*PC!)!%J!&!2rr"@GbC@9Z!J! +5!!B!rrm(E@&RC@jdB3a!1!!#!!!!!`!#!")!!!$rr`9KE'PREJ)!%K!!!2rr"'a +PCR3#!")J!!$rr`CMC@jdCA)#!")`!!$rr`9bD@GSG!a!+!!%!*!&!`!5!!!!rrm +IG'9cG#"[CL"ND@CQCA*PER3JER9YBQ9b)'C[FQeKG!a!8!!&!!!!"!!&!")!!!$ +rr`#3"d!&!#)!!!$rr`#3"d!&!$)!!!$rr`#3"d!&!%)!!!$rr`#3"d!&!!)!!!$ +rr`#3"d!-3"X!"`#3"3-!%J!!!2rr%R0[E@8JC'&dC5"KEQ3JG'PYC3a!8!!)!!! +!"!!&!&)!!!$rr`#3"D#E3!8!BJ!!!2rr!*!&'*a!"3#5!!!!rrm!N!6!#H"!"3# +L!!!!rrmTA)r#p5M-2`8!dJ!!!2rrQTQ3"HNr$%!9!!S!N!8$!")!!!$rr`acEfe +P)'C[FQeeE'%-3$m!#`!!!!-!*3!5!*!,m$mL!")!!!!"!!CK)(4PH(3P!")!!!! +#!&@3"Y8r*3!5!!!!!`#3"a"!%S!!N!36J!#3"2m2!!!"-!!!: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_1.0.hqx new file mode 100644 index 000000000..5fae0005f --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_1.0.hqx @@ -0,0 +1,45 @@ +(This file must be converted with BinHex 4.0) +:#A0SC@9d,RG`G`"#9h0c3PGVF`%!!!!(J!!!!@,GiN*ADh0#9h0c3PGcF`#3"3% +!N!F"!*!'!3F!N!3&M!!*!!!!#3#3$!%!N!3(!!%!$`!!!%J!5!#3"!,`!N$rmIr +Z!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3!#!!!!!5F2!!% +!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!!!""`#3#!%(!*!i"NGPEQ9fB3!Z!!T +`FQ9Q!*!(A4fF!&dIR!!!!33$!J)"!3%!!3!+!!!!)3!$!!F!$3!$!*J#*J!"C'p +cG3PK!*!&A4fF!&dIR!!!!%J!!!")!!!!5!!!!%J"!3%!!LCQEJ!))!aQ%(!`,`" +1V36D+%!J$&K2Cd3[$%kY!$SS3#"8)+hNU#"-S#NJ9%*S!!3J9%*S!!BJ9%*S!!J +J9(!!)8!!#L"85'J!$Mmm!qP`$cm!6Ud$FL"-S#TB6b!-+'lrr%jH6R919J!!,`` +SEJ!))!aR-#"8)+hNU#"82bJ!"+QD)!aR(R!!,`![$%kY!%)J,J!-#!!!!&"2C`J +[$%kY"1*B6bKZrra1ANje6PErqNMR!4JSEJ!))%bJ+9@22cb!!#mmF(*PCR!"(`" +)E[rk5'lrr%kY!c)q(fCQ9Bmr,[rk,blrr#"85'J!$Lmm3PGVFbmm8h4KGdkY!ZS +q(`G3B@GP)#C`)&4)D!!16Ud$+P@22blrqLmZrr`J9%KS!!j`!am!6Ud$)L"8-9m +!"#"8-@lrqJ!))&3KE[rm!!TJ!!#LF(UM(LC),`Y1V3QL)&4"k!!1*dJ!%L"8*fJ +!#J!`)&3hD!!)!"C9Mbm,F!!I!%kY!Q*1V3QbF!(!+`!HFJ!5!%U"CbC9Mb"82bJ +!##mS!!T)D!!16Ud$#R!,,`")H!2V6Ud8dNr[!!TJ&%TV!"KR$R!,,`")H!2V6Ud +8dP"2)%ZJ(e@2)&3r+!!),bJ!#NKS!!j`!am!6Ud$)L"8-9m!"#"-S#T-lKL!rqj +1ANje6PErr%MR"aJQEJ!-+'i!!3!23!!"!*!%"`!)rrm!N!KU!!$rrr#U)&!aI2r +[!!-!"3"U$L$`UL*4)dJ"!'j[FQeKE!`J!!S!!`J!!(0LEfaN$L!!#J!$%!!!FfP +dB@aTBa%J!!S!!b!!!(0eEQ4PFQaTEQ9S!!!5)2#U)&!aI2m!BQPR)'0[E(9YEJ! +"!!!!C!!!!"Fr2)!!,ca`BJ!&!!3!C!XJ!!S!!`)!!(0bC@3I$5!!#J!$!`!!FfG +bC@9ZD!`J!!S!!`3!!(0LE(9P%5!!%J!$!!!!Fc%i)("[D@jdF`i2)!!+!"B!!!" +cBfpeFQPPFQJ!!J!!!&!!!2rr!&1jF!"c!!8!!`!$!&!0)!#3#'&XD@GZ!!`J!!S +!!`!!!"0XC@Cd$L!!#J!$!!!!8f0PER4PFJdJ!!S!!`!!!$0bD@GSG"!!!`!!!$) +!!2rr!&1jF!#!!!8!!`!!!$)H)!#3#(0[E@8JER9YBQ9bD@jR)'C[FQeKG(-!"!! +!!)S!!2rr!*!'!3S!!`!&!)S5%!"RkBS!8lN!2rc-N!J5%!!+!!-!)J"c2rc-N!J +5%!!+!!-!3!"c2rc-N!J5%!!+!!-!B!"c2rc-N!J5%!!+!!-!JJ"c2rc-N!J5%!! ++!!-!LJ"c2rc-N!J!"3!!!$B!!2rr!*!'!33!!`!!!$BK)!#3"(rrI`"cEfeP)'4 +KG'8JEh)JG'PYC5"QEh*YBA4c!!!'!!!!E!!!rrm!N!Em4!!$!!3!E")3!!S!!`# +J!(0!$Ca!!*!'%K!!#J!$!-!!Fd!0kQ!!N!B5%!!+!!-!`3"c3!kF3!#3"K)3!!S +!!`$%!(-rrS!!N!F))J!+!!-!a`"c!!F!!!!S!!$rr`!!!!`!!I`N!!-!!!!S&#! +!!Ia-FfpY!(0[E@8JCQpbEA9XB3!)!!!!CJ!!rrm!!!!-!Q8!!!!$!!-!CJqJ!$3 +!N!3"!!!!B@*MC'8!&*!!!!!!+J*PI`!!!6rrJ!#3"a53!(rr!Am!N!8#2rkUN!H +V&*!!!(-!!!!m!!!!!crre9@3"PB!!3![!J!&!!!!$J!!!%X!4J!!!!)!,!#3"8X +!4J!!!!)!,!!"!!%!A`"'!!!!!J!X!!)!!!",!%B!!!!#!#`!!`!!!%X!4J!!!!) +!,!!%!!%!N`"'!!!!!J!X!!8!!3!&!J!)!!!!#JB'B@*MC'8!!`!!#!!"!!F&!!! +!!30P!!J!!J!6"3!!!!)&!!!!!`i"rrq!!!d$!!!)!!-!$3,rrS!!rrq!!&N"!rp +!!%!!!3%!!3%!N!N*!!-!#J!%!!N!!f)F!!!"!!!!!4`!!!!F!!!!4J!Y32qS28E +rV%(Zria`"k*J2J!JEJ!-)+lr[$!(61i3#bTcD'9PG#jhF(F`!J!!!%*AFh0#9fY +c!*!+3PGcFd*ADh-!N"M2XLAS!*!'!@)&,J"5Kf!F)!B#J!!!!!p)J"Qc!!"i!#! +'FK"1V32b,!"6Kh!"X)GYhNcZ'1MreNjH6R8`-6)c0$8f0cJj38*$4%9'!!"19[r +m51F$'#CZ!!`m,J!5)'i!#%)3+&086(i"B!a`!"!88N$B`#!(8SG)aVb(EZjCMbm +-6Ud$HR!!%"63!!!!$!Y#C@&RE'9AEh*VF`!!!!J!6J!#!G`#GJ!!!3!!!!%F!!! +!(!!!!%B!A5"d'R)!!!!F!%B!!9088L!!!!!5Ge"[F`!!!"krp2rr!*!&A4UF!qR +rr`!!!"!!N!6Y6J: diff --git a/writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_DB_1.0.hqx b/writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_DB_1.0.hqx new file mode 100644 index 000000000..f9790361d --- /dev/null +++ b/writerperfect/qa/unit/data/calc/libmwaw/pass/WordPerfectWorks_DB_1.0.hqx @@ -0,0 +1,176 @@ +(This file must be converted with BinHex 4.0) +:#@4KG'%ZGh"h-3"#9f4L3PGVF`#3"#3M!!!"BX#C3PGVFd*AC'*#9f4L!*!&!3# +3"`%!N!B""`#3"!@-!!N!!!!*!*!-!3#3"!F!!3!2!!!!5!")!*!%![!#32rarqi +$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3# +3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3%!!!%(!*!)!3F!N$J'4f9ZCACK!LJ!!@4 +[Fh8)03#3"9dGC!"G)$3!!!")!!!!5!!!!%J!!!")!*!&!3)QCMi!N!3$F!"4YjJ +!N!3"+`#3"@6cjJ"6bQ`!8mUN!!!!!3#3$Jp6G(PXC9GbDA4PFL"-EfF!N,S(8'& +RC5!QF!#3q5i!#R"bC@B!N!GG(@3!A5!d!"-""!-#!J%"!3!"!!S!!!!K!!-!"`! +0!!-!N!8X!!3!2!!!"(4PH(3%4QpZG!!EC`!%8fPkC3!ED!!&8h4jE'8!'fN!"80 +[E'pb!"YU!!%Y!*!%#J"S!&dFi2rr!-N!2!!!"QjeE@*PFJ#61!!!!!B!N"419[r +851F2'#CZ!"!SEJ!)!8F!A4cJrrm!#!!m!!!%C'&dC3)!!)qi!!!!$J#3&%j@!!! +[$#KZ!!J[$#"X!!)#D!"G(1$rr`$m!$`!!!4dD@eP!NS!@%pR"M!Z!!jJAL"X!#J +J8#"S!")Y52rm)&!QD!")5'i!$Lm,6Ud,1Mi!!dF!A4cJrrm!EJ!!!#N!!J!#EJ! +!!!G-BAP[GA3a!*!BA4bd!&dG#!"G(-3!#!%!N!Rrrmqci(3!A4eN!&dF`!#3#8J +!!!")!!!!5!!!!%J!N!8"!LCQQ!#3+f6c2[rr!!!"%!"4YjJ!N-3(8'&RC5!QF!# +31@6cMJ!!!-J!8EHB!*!,C-0+!!KTB!!)!!%!8m$`!&2'r!"6a0B!N&&6c(`!N%B +"N!3!!3#3"%E!!!!!#`!!P9J!N"K19[rd51F6'#KZ!!JJ$'B55(J#D%kY"0SS3#! +-@%pR!!3XGJ%J$'B8,`0`"Lm!6Ud%fPL2*Kp+J'B#GJ"+!fFB,`a1V3!k)&3JVI! +k)&4#D!!%F!"B6f!#F!!S6#"8)+hb&L"83LJ!"b"8F!!K3!!U)&3K3!!Z)&3K3!! +Q)&3K3!"))&4#+!"-F!![!%kk#$3J9#&!!#CBMbm!6Ud*SR!!*N"f!5),CKB[!h! +1,`"1V36D@)mQ(bC!)!YQ!RB!5J0R4RB")!YQ&#m$F!`[!2rr!!"BMbBI5S"Q!RB +!5J0R%Lm,6Ud,+L"6)#hN6L#!@%pJ!R!!*NXJ8b#Ym,JJ8c&m!(8!$("eB!*`!#" +8)8X!5#m,6Ud*SL"83QJ!-L"8)@i!$!"%IJ%J9"&(!$3J9"&m!!%!08)()&344`! +f)&4#+!!k)&3aI2rr!$j)H!A'6Ud'bL"8)8!!+L"8,bJ!+NkY#D)J9#mS!#T1V3F ++@)m[!%kY#D*#4hB'@%p)ab"8)'J!+L"3)!FL!-$m!24)3F,m!24)38*"d)%a[2r +r#!*)ab"8)'J!+L"3)!FL!-$m!24)3F,m!24)38*"d)&#-!J%5-Irr`!!!#SJ8#! +()J$!r!$d5%(#r!$d5%G#"3M!)"6!(8NHf4fk3!#"8)'J!+L"33QJ!!L"8)'J +!+L"3-,`!!8*(GJBJ9#"S!#SJ8%(S"F"#-(!!)&3JD!!U)&""k!@k%E`!!R!!-!G +54lC(EYBJ9#mS!#T1V3FU)&3[+!!U6Ud(%NKi"B41V3E+)&3K3!!Z)&3[+!!Z6Ud +*SL"8,bJ!,NkY"`TBMbm!6Ud*SL"8)'J!,L"33P"#4hB*6qm!$%M()&3JD!!Z)&! +J"q@!-Ecrr`J+3NCd&'"-5-FJ9#"S!#iJ8#!()J$!r!"m5%(#r!"m5%Irr!!! +!K%*`#!")ab"8)'J!,L"3)!FL!-$m!(a)3F,m!(a)38*"d)&#-!Jd-!C54V4'EV! +`"e*(YNGZML"8)'J!,L"3-Acrr`9F)&3JD!!Z)&"#D!9D)&3JD!!Z)&"#+!9B)&3 +JD!!Z)&"#+!9C)&3JD!!Z)&"#+!8b)&3JD!!Z)&"#+!8+)&3[+!!Z6Ud(+L"8,bJ +!,NkY"a)J9%)S!$FJ9%)S!$JJ9(!!)8!!6P"2)&3JD!"%)&!YD!#)rr3[2'4[Fh8 +JE[rd,`JJ8#"3)QJ!$%k4*N"36b"6,LJ!'#"8)8F!8L"6,LJ!(#"8)8F!9L"6,LM +rr`!!)8F!@L"6,LJ!*#"8)8F!AL"6(LJ!+5"8%8F!Bb"6(LJ!+L"8%8F!C#"6(LJ +!+#"8%8F!BL"6(LJ!+b"8%8F!C5"62#J!,#"8-8B!CL"-S#NJ5k!T)&0"k!!Z,8M +rq#m)5(J!rb"85'J!D%kY%FSJ8d(S!5iY52rm,`K)H!$r)&4)D!&S6Ud4bL",S#S +J9%(S!%!JZ!)-)%bJ+Nr[!"JJ$%cZ'-Mri%jH6R919J!!)'i!##"3ASJJ#%jH6R9 +19J!!51F"'#CZ!!`SEJ!)F!!3%ci!8NF-4`!HE`*q(L",)P4HL8M()!HJ,L"8%@i +!%`!'rrm!!2rd6Pj1G8j@!!")j`!S+'i!##"8ASJLEJ!-*&33+J!(5)"53%M!S#i +J9#*Z!"!5U!!'61i8!2ri6Pj1G8j@!!![$#KZ!!JJ$'B35(J#G%kY"0SS3#!-@%p +R3LmZ!!`[$%kkq[`S3#"8)+hai#"8F!!K3!*S)&4#+!*X)&34I!!"!R!J9"&m!!% +#F5"8%A`!!3*b)&34I!!"!R036b!-+'lrr%jH6R919J!!51F!'#KZ!!JJ$'B35(J +#D%kY"0SS3#!-@%pR,#mZ!!`[$%kkqT!!+%!J9##YmH4`!#m!6UdZ`LC!,`Y1V3Q +L)&3K5`"16qm#N!B!N!K19J!!,``SE[rr)!crrh"#rrp1VIrr+%$rreK2rrm`,[r +r5-$rrbmZrrm[$%kY+cSS3!"8)+hb+#"8)@i!&!!k)&4`!"!S!$J-3!!&6qm!$#! +-+'lrr%jH6R919J!!,``SEJ!))!aQ%(!-,`"1V36U+%!J$&K2C`j`rbm!,`a1V5C +b!!"36b!-+'lrr%jH6R919[r151FI1#KZ!!JJ$'B5F$![!%kY"0SS3#!-@%m!!!( +3GJ%J$'B8,`0`"Lm!6Ud%fPL2*Kp+J'B#GJ"+!fFD,`a1V3!k)&3JVI!k)&3aI!" +C!!4`@9K2B!*`!#K-)&3JVI)J)&4)D!!+6VVrAJ!!)@i!$!!'2A`!#[rd2A`!#[r +bI!jq3AS$)&4(k!!+2Acrrrrf3J4`!"!%!)!hE[rf!!*+VJ!3@%pR!!$S)&4"k!! ++,8Mrr#"Z!"!J8#"S!)`Y52ri3HJ!+#C))'lrr#*,4HJ!"#6C*0NJEJ!3)&!JD!# +d,8MrjL"3*QJ!!#!,C`!!SL"6)'J!*Le)rpSJ8$JS!!B[,J!36UdR+LC!@%mJ8c` +S!#j54J!*cqJ!,#"61LJ!-%T%Cc)`"&0!5-![!#mZrpT1V8@5,8$rcLm!5'lrdNk +Y3bSpE[r8rr3`,[r@@%!p32rb6qm!%%KZrpi[#dkY*YS3,[rL!!!#J!!!!"q![!! +!!!%#,J!(rq)L!1F*JblriL"83qlrhNAS!"BNf56C8%m!E[rU,blrmM!(d'lrp$m +!-!E3E[rb2`#STb"83qlrkNAS!"iNf56C5'lrkM!Zrr"63$m!2blrmM!(d'lrm$m +!-!E3E[rb2`#STb"83qlrkJ!!!#BNf56C)&3a43!Z)!a-lKcirkj1ANje6PB!!%M +R%!JSEJ!))!aQ%(!3!!"1V36D+%!J$&K2Cd*f!5!-CK3[!h!3,`"1V36D@)mQ(dU +!CJ*f!%S$CaS[$%kY#USJ9##Ym$iJ9$&m!&S!$("D@%pJ!R!!+%`J9##YmL3!!%c +Z%!Mrq%jH6R919J!!,``SEJ!))!aQ%(!H,`"1V36D+%!J$&K2CaS[,J!3,bi!$#m +-6Ue'ULK!)&3JVI+)6qm!$#!-+'lrr%jH6R919J!!6Pj1G5"8!!!24!!@N!"T!") +p32rqB!`pI!,3rr`pI!)FrriJ,[rm+'lrq!!!6R919J!!51F"'$iZ!!iSEJ!))&5 +qD!!mCb!QD!!N-8F!2#!,Ca3[#dkY!#S[#b"6)&!LD!"F6T&36dcZ')$rp%jH6R9 +19[ri51F6'$iZ!!iSEJ!),$`!C!!!,bhYi%kY&q)Y32rmF'X[!#mYlH"1V4ID@)m +[!%kY&VS!!!a(J!"2l`!-CK"`!"m!5(S"YNkY#C*J!!'N$%GrrfBd)&3YD!!NrrJ +J9!"(!$T+V[riC`!"L#mZrrK1V4`U)'lrq#m))&!J8#*S!&a1N9"2B!!"DJa(rrj +X"(lqB!J-4`!$E`*q!b"8[QJ!1QG',@J!*2ri)&3a4`!k!!$rq'FD,blrq%kY(#S +JE[ri,`JJ8#"3)QJ!A%k48%mJ9#"S!'BJ8%TS!!KR$#"8,bJ!CNkY$h*B6dT(Ea! +J"ZqS,`![$%kk!6*36f!85-FJ"d5!)JEJS5m",`a1ZJ%F8%mJ9(!$X'J!1QBQF2m +[!%Ki"")[,[rm6UdF8R!!,`")H!34,blrr%kY(&*2l`!BB&3J9($qX'J!1QBQF!! +[!%Ki"")[,J$m6UdF8R$r,`")H!34,blrr%kY(&*2l`!BB#4`!#m!5(J%%LmZrr` +!V4a5F!![!%Ki""%[,[rm6UdF8Nr[!"K9Mb"6,bJ!"+P32KpJ'J#3"2rr,`F[#b" +6)&!LD!")6T&2l`!-8dG+4flL)&4`rV"S!$TZ*R!$X'J!N!9D!!3!!!",!!S!!`! +!!(-!#J!$#!!!F`!+!!S!'!!Q!!S!*3!B!'8!!3",!!S!!`!!!(-!#J!$#!!!F`! +F!!S!+J!l!"`!1J!U!(S!!J",!!S!!`#J!(-!#J!$#!!!F`!Z!!S!2!!Q!#i!*3! +m!'8!!`",!!S!!`$%!(-!#J!$#!!!F`"!!!S!6J!T!%!!+!"1!'J!%!"e!!J!!!! +"!!)!!`!%!!8!"J!(!3*L!!!""daKH@peG$*3)QJ!5%k46qm!$%cZ'-Mrj%jH6R8 +X9!"G(*`!A4[8!&dEd!!)!3#3"'%!)'j[rrr2Xq"e!&dGC!"G(+3"H3"G()`!!!" +)!!!!5!!!!%J!!!")!*!&!3)QCJ`!0L!-@%pR$%Ki""-[$%kY'4T36bKZrra1ANj +e6PB!!%MR!4JH,J!2+'i!##"8[LJ!8@FD*QJ!*"&(!&%J#fF1,`XJ8b"3)QJ!A%k +4@%p-lKL!rr41ANje6PB!!#"Z!!JJ8"&Z!!m!8NjH6R919J!!51F"'"iZ!!mSEJ! +))&5q+!"6CaSQD!!N%8F!8b!,C`i[#b"6)&!LD!"F6T&B6dcZ')$rp%jH6R919J! +!51F$'"`Z!"-H,J!2+'i!#%S'C`JJ9,iS!&KQ$%S'CMBJ9,iS!&PR,L"8*QJ!*%S +'C`B44`"BB!BJ9"&(!&NJ#fF8,`Y1V4`U,`XJ8b"3)QJ(8'&RC5!QF"M!rr"1ANj +e6PB!!%MR!4JH,J!2+'i!##"8[LJ!9@FJ*QJ!*"&(!&8J#fF8,`Y1V4`U,`XJ8b" +3)QJ!A%k48%p-lKL!rr41ANje6PB!!%MR!4JH,J!2+'i!##"8[LJ!9QFJ*QJ!*"& +(!&BJ#fF8,`Y1V4`U,`XJ8b"3)QJ!A%k48%p-lKL!rr41ANje6PB!!%MR!4JH,J! +2+'i!##"8[LJ!@QFD*QJ!*"&(!&SJ#fF1,`XJ8b"3)QJ!A%k4@%p-lKL!rr41ANj +e6PB!!%MR!"JSEJ!)*QhNEL"6)#J!)!5!3e0dH@FF")!`$qccCK`J8c!S!#C)`#m +!!!%!N!3J#fFX,`XJ8b"3)QJ!,%k4,8$rr%KZrrLSG#mZrrbSFbmZrrLSFh!",`! +[$%kY&j*-lKJ!rr"1ANje6PEr!%MR!aK(l[m!2#i!$LKZ!!K)aLm')&3[+!"Z6Ud +,NMi!$%Irre"2CM3r"Lm,U2p)aLm',`XJ9#mS!'j1V3Yk5-B["L"8,bJ!ENkY#j) +q!!a(rrp2l`!8CJ4`!'!#%!G-lKM!r["1ANje6PB!!(!!%#i!$bm!)'i!##"3,bJ +!ENkY#i*1ANje6PB!!%MR!"JSEJ!))&3QD!!q)&0+8'm-)Qi!$$0S!!)!"Q!+)'i +!$$&m!!2rr`!!*QJ!3L"65P"[#L*Z!!`bU!!#B!JJEJ!--,`!$#"8*QJ!4L"65P" +[$#*Z!!`cD!!#!!4J#L"Z!!`aI!!K!!49Mb"8,bJ!5UKV)'i!$$&I!!*-lKJ!rrK +1ANje6PB!!%jH6R919J!!F!&1ANje6PErq(!!,8$rr#e!rrJJEJ!)3qlrq#$C)0P +1ANje!!!)a2rr!!&m)`#3"3(rrm!"Ic-!N!6m&rrr!!'#!3#3"1!#rrrd!B-0!*! +%i!%!$I3"XFN!#'Rdi!!!%[!#$5-!#'RShrm!'I!#%[F!#'SJhri!*I!#69F!#'Q +3!0rp!$$rr`!!!!KTM0rm!%B`!PFp!*!%hrX!96!#X`F!N!6IqJ"Pm!+h)3!)D9c +Iq3"b-!,VU`#3"0ri!(``![iP!*!%hrF!J6!$!EN!N!6IpJ#0-!-+``#3"0re!*I +`!`c4!!KTG0rd!*c`!c*&!!KTf0rc!+-`!d1K!*!%hr)!Uc!$E5N!N!6Im3#k-!0 +`m3#3"0r`!-F`!i2M!*!%hqm!dM!$L,-!N!6IlJ$J-!14E3#3"0rY!1d`!j`(!*! +%hq`!qc!$U)d!N!6Ik`%0-!1U8`#3"0rU!4S`!pY[!*!%hqN"*6!$flRrr`!!hqJ +"-6!$h#%!N!6Ij`&!-!2FN`#3"0rQ!8X`!r(A!*!%hq8"9M!$mcN!N!6Ij!&K-!2 +hJ`#3"0rM!@m`!rIT!*!%hq)"Ic!$q$8!N!6Ii3',-!3B!`#3"0rJ!CN`""k6!*! +%hpm"S6!%Aa-!N!6IhJ'X-!4MI`#3"0rG!Ed`"'5I!*!%hp`"d6!%CP%!N!6If`( +R-!4Rl`#3"0rD!I3`"'LR!*!%hpN#!$!%D88!N!6If!)2-!4UI`#3"0rA!L!`"'i +E!*!%hpB#+$!%Em%!N!6Ie3)a-!4aR`#3"2rr!!!`"('h!*!%hp-#4c!%RI%!N!6 +IdJ*1-!5Mi3#3"0r4!PS`",EC!*!%hp!#CM!%ZTN!N!6Ic`*a-!5pX`#3"0r1!RS +`"1hK!*!%hmd#KM!%lrN!N!6Ic!+4-!6cY3#3"0r,!TX`"3Ba!*!%hmS#SM!&"p8 +!N!6Ib3+Z-!8@4`#3"0r)!VN`"4KM!*!%hmF#ac!&'4N!N!6IaJ,D-!8Dc3#3"0r +&!Z``"4Y[!*!%hm3#q$!&(id!N!6I``-*-!8Sf3#3"0r#!aR`"5[K!!KTi0r"!b! +`"85h!*!%hm!$+rrr!*!'hlm$06!&C58!N!6I[J0(m!9PP3!)DBMI[303m!9QP3! +)DB6I[!0Dm!@')`!)DGcIZ`0Im!@)J`!)DAMIZJ0P-!@*f3#3"0qj!h3`"BUA!*! +%hlJ$JM!&Q!F!N!6IY`13!$!&Q-m!N!6IYJ1M-!@PT`#3"0qe!l8`"DaA!*!%hl3 +$[$!&V+8!N!6IX`2--!@bV`#3"0qb!pi`"Ehr!*!%hl%$m$!&`F-!N!6IX!2q-!A +*B`#3"0q["!2`"GKC!!KTJ0qZ"!h`"GXh!!KTI0qY""R`"Ga"!!KTD0qX"#%`"Gf +c!T!'!*!-'FJ!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rrdj@rrp)j`% +B,Li!&!"Z!!`SEJ!))!aQ%(!@,`"1V36D+%!J$&K2CeB[$%kk$5JS3#"8)+hNT#" +8)8X!$L"8%@i!%`!%F2q`KeK2CK`[#dkY$LSJ9#&!!")[#dkY!!!J9#&!!!C36f! +1)&3KEHc-!")J9#&(!!BJ9(!!)8!!#L!-61iBJ2rd6Pi!G8j@rpa)j`%B+'i!##" +8*QJ!$R!",`!JD!!5)&![+!!m6UdANL"8%#J!"&-!8%pP!!)k$!!!"')!!M*b!") +!dN%b1a!'6[X3!!!B!!`#*!!!!6![$%kk"T4B6f!!!JiJ9#mS!"*1V5$k,8$ri#" +8)'J!#U!T)&3JD!!+!&$rh#"8-#J!#%M!,`![,[rJ6UdC`NKZrqj)E[rX5'lrp%K +Zrr!J9$!S!!K)`#m!,`Y1V3l5)'lrh#mS!!i[+!!+-#J!%NM!,`!J9$!S!!J!!#m +!,`Y1V3j+)&3`+!!)5-![!#mZrq"1V4R#F!![!#m!5'lrr%KZrrJJ9!!S!!K)`5m +",`Y1V3l5)&3JD!!5)&!YD!!mrq3`,[rZ5-![!$!Zrqa)`#m!,blrr#mZrrJJE[r +F-#J!%NM!,`!`,[rZ5-![!$!Zrqa)`#m!!!$rp#mZrr!`+!!)5-![!#"Zrq3[##" +3)&!LD!#X6T%J9#"S!!UJ+Nr[!)3!!!$f)&3`+!!)5-![!#mS!")[+!!16Ud2DLi +!,`Y1V3hL)&3`+!!)5-![!#m,6Ud28R)!-J"+J5"8)8%!#L"8F!5`U!!+6qm!''B +BF!J[!*!%#%M",`%[#dkY$eT2l`!-B"K`"Lm!)&3b+!!)5-%[!5m,6Ud2@Nr[!!` +!#dkY$dT+3&E!4!")J%M!@)m[!(!(,`"bC5m",bhYi%kY&p)J9#mS!")JD!!5)&! +J8#*S!%41N5e!rqJV314Q)&3[+!!5)'J!%L"3)&!LD!!!6T&BMbm!)&3[+!!56Ud +JqPL2,`"1V5*k)&3[+!!5,`F[#dkY$GT2l`!S!1iBJ2r36Pj1G8j@rm4)j`%B+'i +!##"8,@J!$[rmF!%[!#"8)'J!%L"3,bJ!2%kY&j)J9"!S!!46!&"2C3!#CJ`!!!4 +L!!*HFJ!5!0*"-MX!!%ll%!!!'!!-!P!"1!&%,`a1ZJ9D@%pJ!!)k@BqSf#eIrmJ +J9#"S!!UJ+3"8)'J!#LC3)&3[+!!56UdJqLe!rm3J9$!S!!K)`#m!,blra%kY'F* +)E[rU5'lrk%KZrr")E[rX)&3`+!!)5-![!#mZrra1V3l5,bX!"#m6!!!!#%M!,`! +J9$!S!!K)`#m!,blrr%kY$NSJ9$!S!!K)`#m!,blra%kY'F)!!#m!,`")E[ri5'l +rp#"8-LJ!#%M",`%[,[rm6Ud1dL"8)'J!%L"3,@J!22rJ-#lrkNM!,`!`,[rS5-! +[!#mZrrJ[,[rd-#X!%NM!,`!`,J!!5-![!$!ZrqK)`#m!,blrm#mZrq``+`!)5-! +[!#"Zrq![##"3)&!LD!#X6T%J9#"S!!UJ+LmZrmLSf8r[!)4J!!%D,`a1ZJ,`@%p +J!!%1)&3QD!!5,@J!$[r-)&3`+!!)5-![!#m,,bJ!$NkY$fSZ!%KZrpT)E[rB,`X +J8b"3)QJ!i%k4,8$rh#"8F!!`+!!-,`!`+!!)5-![!#mZrma1V3pD5'i!d#"8,bJ +!%L"S!")J8#"3)QJ!-%k4,`XJ8b"3)QJ!4%k4,8$rj#Y!!'B[#b"6)&!LD!"%6T& +BMbm!,`Y1V5$k@)m[!%kY)RS[#bm(,bi!N!6rreQ2,blrh%kY!5T`",#ICK)[,[r +F6Ud(#R)!%J"+J9K2B!*b!8KZ!*!&@J!%!!$rr`!+!!-!!!"c!!S!!`J!!(-!(!! ++!#S!53!F!%J!+J#)!!(rr`!+!!-!!!"c!!S!!`J!!(-!,J!+!$`!53!Z!%J!2!# +)!!,rr`!+!!-!S!"c!!S!!`J!!(-!3!!+!%i!53"!!%J!6J#)!!2rr`!+!!-!a!" +c!!S!!`J!!(-!8J!+!'!!53"5!%J!B!#)!"!!G3!)!!!!!3!#!!-!"!!&!!B!"`# +3"3F!"`#3"e`!!2rr!*!*!`!$!&`-)!!!!5q!!!!!G'pdEa)3!&1hQ!"6Y`"!!-! +!N!F5%+T9UP@U9B!!3#d!!!!"(9S!!")3!!`!!J*FG!"!,3!!!!%l%%!X!!%!!!" +F!!$rr`#3"`N!!`!$!&`-)!"RkBS!8lN!G(9dG4)3!*!)3!'!!*!(%K!!N!K!,3! +!!!%GPJ!!%K!!$!!"r03!!%!Y!!!!!6X39CF!!J!!!&`!!2rr!'ITLJ"6Z8`!!`! +$!&`-)!#3#(4TG'N5%,S)!*!'3!'J!*!(%K!!D!!!!!`!!%!Y!*!%p5S!!")3rI` +!#J#3"%!Y!!!!!6X3D`3!!`!!!%B!!2rr,'jeE@*PFL`!!`!!!%Bb)!"RkBS!8lN +!+'0[ER4KD@jc)$3JCQPPE'4c1L"dCAKd,'jeE@*PFLaNBA4P,(4TE@8T!!3!!!" +8!!$rrfCTC@aN)$%U!!-!!!"82b"dG5adDA4T!#KTEL"QD@9XC#!a1L"dEh4[,(4 +eG(8XG'PdD5YdD'9cC5"QDACP)'0[E@ePER4c*b"XD@jPFbN!!!8!!!!`!!$rr`! +S!"B!BJ!!!!-!!!!`'b!!#J!-!#J!!#KTEL"QD@9XC#!b1L!c,$3X05N@!!B!!!! +q!!$rrb"QD@9XC#!M!!-!!!!q+L!a,c-a!*!%+'PZ)'CTC@aN)$-k)$%[-5md,$% +[-c%[0#`a-Lma,cJj+3!(!!!!1!!!rrpQD@9XC#!d+J!$!!!!1#3J-$!X03#3"#K +TEL"QD@9XC#!d1L!c1M!`,$3k-$!X06S`-#N!!!!$!!!!$J!"!%X!#J!$!!!!F`! +!!!%!5`!+!!-!!!"c!!%!!3",!!S!!`#J!(-!!J!"!%X!#J!$!-3!F`!$!*!&!J# +3"HX!!!!(!!%!#!!#!!F!!B!Q!!!"!!!!!4`!!!!F!!!!4L39!@El,K%"&`(I[2J +m@`8!-iF2D38R"(N2SAU"!@Cl#bTNBA4K,RG`Gc%`!J!!!%*AC'*#9fYc!*!+3PG +NBN*ADh-!N"M2Xq&p!*!'!@,$Lc`l'$Y,41&VSQXBf`,"L$X38`0$$S%!Fa9V+YX +0!`-H#J"E@eT)#!SXH`!-SK`SKBci$d+i+5`P&!bSSZYMUe)2%R#E'%8l&Lcc9F- +-Ue)qibI3%PX#a6964kJm9QX#9`8X22Ll"@DV8LN1J3`2!4)A!E5V8Q`2!#YT"%M +K!'8'!!!!$!Y#C@&RE'9AEh*VF`!!!!J!6J!#!G`#GJ!!!3!!!!%F!!!!(!!!!%B +!A5"8'R)!!!!F!%B!!9088L!!!!!5Ge"[F`!!!"krp2rr!*!&A4Lm!qRrr`!!!"! +!N!6Kk`: diff --git a/writerperfect/qa/unit/data/calc/libstaroffice/fail/.gitignore b/writerperfect/qa/unit/data/calc/libstaroffice/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libstaroffice/indeterminate/.gitignore b/writerperfect/qa/unit/data/calc/libstaroffice/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libstaroffice/pass/Calc_3.1.sdc b/writerperfect/qa/unit/data/calc/libstaroffice/pass/Calc_3.1.sdc new file mode 100644 index 000000000..683d1a85c Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libstaroffice/pass/Calc_3.1.sdc differ diff --git a/writerperfect/qa/unit/data/calc/libwps/fail/.gitignore b/writerperfect/qa/unit/data/calc/libwps/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libwps/indeterminate/.gitignore b/writerperfect/qa/unit/data/calc/libwps/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Lotus.wk1 b/writerperfect/qa/unit/data/calc/libwps/pass/Lotus.wk1 new file mode 100644 index 000000000..288d914c5 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Lotus.wk1 differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_3.123 b/writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_3.123 new file mode 100644 index 000000000..fa2154967 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_3.123 differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_98.123 b/writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_98.123 new file mode 100644 index 000000000..1d3a7e752 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Lotus123_98.123 differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Multiplan_3 b/writerperfect/qa/unit/data/calc/libwps/pass/Multiplan_3 new file mode 100644 index 000000000..7639d78fb Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Multiplan_3 differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wb1 b/writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wb1 new file mode 100644 index 000000000..95a6331c9 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wb1 differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wq1 b/writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wq1 new file mode 100644 index 000000000..fc1aae945 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/QuattroPro.wq1 differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wdb b/writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wdb new file mode 100644 index 000000000..d9a6a56ba Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wdb differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wks b/writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wks new file mode 100644 index 000000000..b0c28eaa4 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Works_2.0.wks differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wdb b/writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wdb new file mode 100644 index 000000000..6fd378644 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wdb differ diff --git a/writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wks b/writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wks new file mode 100644 index 000000000..a9b3d0277 Binary files /dev/null and b/writerperfect/qa/unit/data/calc/libwps/pass/Works_Windows.wks differ diff --git a/writerperfect/qa/unit/data/draw/libcdr-cmx/fail/.gitignore b/writerperfect/qa/unit/data/draw/libcdr-cmx/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libcdr-cmx/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libcdr-cmx/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libcdr-cmx/pass/fdo63782-1.cmx b/writerperfect/qa/unit/data/draw/libcdr-cmx/pass/fdo63782-1.cmx new file mode 100644 index 000000000..013448f38 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libcdr-cmx/pass/fdo63782-1.cmx differ diff --git a/writerperfect/qa/unit/data/draw/libcdr/fail/.gitignore b/writerperfect/qa/unit/data/draw/libcdr/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libcdr/fail/EDB-35217-1.cdr b/writerperfect/qa/unit/data/draw/libcdr/fail/EDB-35217-1.cdr new file mode 100644 index 000000000..374503367 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libcdr/fail/EDB-35217-1.cdr differ diff --git a/writerperfect/qa/unit/data/draw/libcdr/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libcdr/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libcdr/pass/EDB-35217-2.cdr b/writerperfect/qa/unit/data/draw/libcdr/pass/EDB-35217-2.cdr new file mode 100644 index 000000000..7a15b4b01 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libcdr/pass/EDB-35217-2.cdr differ diff --git a/writerperfect/qa/unit/data/draw/libcdr/pass/fdo65220-2.cdr b/writerperfect/qa/unit/data/draw/libcdr/pass/fdo65220-2.cdr new file mode 100644 index 000000000..aff705ffa Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libcdr/pass/fdo65220-2.cdr differ diff --git a/writerperfect/qa/unit/data/draw/libfreehand/fail/.gitignore b/writerperfect/qa/unit/data/draw/libfreehand/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libfreehand/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libfreehand/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libfreehand/pass/.gitignore b/writerperfect/qa/unit/data/draw/libfreehand/pass/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libmspub/fail/.gitignore b/writerperfect/qa/unit/data/draw/libmspub/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libmspub/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libmspub/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22310-1.pub b/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22310-1.pub new file mode 100644 index 000000000..741676f3f Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22310-1.pub differ diff --git a/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22655-1.pub b/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22655-1.pub new file mode 100644 index 000000000..e3654a13a Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-22655-1.pub differ diff --git a/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-29664-1.pub b/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-29664-1.pub new file mode 100644 index 000000000..18287fc15 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmspub/pass/EDB-29664-1.pub differ diff --git a/writerperfect/qa/unit/data/draw/libmspub/pass/fdo59355-1.pub b/writerperfect/qa/unit/data/draw/libmspub/pass/fdo59355-1.pub new file mode 100644 index 000000000..607a07ae2 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmspub/pass/fdo59355-1.pub differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/fail/.gitignore b/writerperfect/qa/unit/data/draw/libmwaw/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_1.0.hqx new file mode 100644 index 000000000..7ff1bd910 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_1.0.hqx @@ -0,0 +1,44 @@ +(This file must be converted with BinHex 4.0) +:#'4bBAFa,QGh!&T23NTD48*5!*!%!qN!!!9R(1d"!&T23NS!N!X"!!J!#3!!!!% +!!!!"!!%!N!3#m!*!!*!%![!#3!#3"!,`!N!&+!2m!%J!5!"M!!%!!!!"!3#3""! +!!3!9!!!*5'9XGQ9dD@0K!*!%![!#3!#3"!,`!N!&+!2m!%J!5!"M!!%!!!!#!!) +!!3!$QC!%rj!+CQBc-rrrCQB!!!!9!!!!$!#3#3%!!!B5!!)!!3!!!!`!"3!22rf +N[(dC02F**%!#r2Yb6)H41E3!!3!5!!!!@J!!!!B"!!$3!!N!!!!"!*!'!8J!!!$ +8!!!!)J!!!"!!"J!f!`!!(3!!!'%!!!"b!!!"`J!!!!)!!!!"!*!H!3!!1!!!!+) +!!!"'!!!"5J!!!!%!!!!#!!!!6`#3"!%!N"8&!!#*!!!!DJ!!!08!!!$1!!!!!J! +!!!-!N"i)!!#,!!!!i`!!!33!!!'b!!!!!`!!!!3!!!"5!*!D!J!!I3!!!@i!!!# +T!!!"LJ!!!!)!!!!&!!)!!3#T!!!"EJ!!!(d!!!'+!*!-!J!!G3!!!-B!!!#+!!! +!jJ!!!!)!!!!'!!)!!3#+!!!!aJ!!!(8!!!$Q!*!0"!!d!!%!!3!!!!%!N"VrN!B +!N!ErN!B!"!!#!!!!!J!!!3(rN!J!N!LCN!6rN!TQCM-crrpQCJ!!!!%!!J!!!!) +!!!%"rj!)L!!L!)J!)J#CN!6rN!TQCM-crj!%-c-!!!!#!!!!!J!!!3(rN!L)!#) +!L!!L!*Q3"2q3#QCQ-c2rrfCQ!!!!!3!H!!%!!!!-!!8!$crpT,ap'66h#54!![c +lFNb(N6Qd!!B!!J!"!!)!!`!%!!8!"J!)!)X!!!$M!!!""!!!!E)!!!#C!!!"(!! +!!-B!!!$M!!!""!!!!CB!!!#R!!!"XJ!!!,m!!!&'!!!!L`!!!6X!!!#C!!!"'`! +!!*B!!!%E!*!)!J%!&3!!!!`!N!Err`#3"`%!N!8i!!!!SJ!!!%B!!!&+!!!F35" +(FQ9KG&G[FQYc)(CPBh4[FL"NEf0eE@9ZG"A)!!!"!!!!"18!!!2P!!!!JNe03N* +c49K8"J#3"J(q!!%!#`&069"#39"36!%!#'4bBAFa,QGh!!)!!J"D6d*+@N9#8J# +3#J)!@Np#5PT&3P)!N"M2Y-fe!!!$k3!!"@G069"#39"36!8!N!B,$J)!J!X"68e +33N&38%`'!*!'#`k#!3!,!8e08%*`BA9Xr`#3"JX2JJ%!#`&06e)b68p5-rd!N!B +,*!)"!!X"68p5-Q&`EQhp!*!'#b8#!3!,!8e36P4"8&"-!3#3"JX"`J%!N!3D!!% +"V`*9!#X!"3!V!!8"fJ*D!#X!"3(D!RS!!!"i!!m!!!")!%J!N!3#m!*!rr(rlJ- +*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*! +1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!!!`)!B2q3#+T9UP@U9DT9!*!)IrrrrrI +rrrprrrIrIrrhrhIrrrphrrrrGrrIrhIrrIphrphrGrrGreArhIp9rphr9IrZreA +rZrp9reAr9Ip9rhIGGpehhAIG9Ep9reAl9Ip9ZeAr9EY9re@r9Hj9qeAZ9EY9lP@ +l9Hj9ZeAU9EY9VP@k9DY9ZP@V9HT9UP@Z9DUU&DT9UP'U9DT&UP5U4DT8UN5U&DT +%UP'U4+S4UN5U%DT!UK'U"+S4UN5U!+T%UJ#U3+S!UJ5U!)JLL#+))SJLUJ#U!+S +!UJ#U!"%!UJ"%!+S!)J#U!#)!L!!L!)J!)J#)!#!!L!!#!)J!!!#)!!!!J!!)!)! +!#!#!!!!!#!!!!)K%)K')4#)4%5*%L"%L4)L!3#!3#!3#!3%#"!J3)%#!i(!i(!i +(Jm'$"`iF1($J`BK%)J#)4#)!%5*%!"%L4!##4#J3+%5#!CR-CM1Cc'BcGl[GlRH +lhHlZhEYhlYflGhqrhqrhqrhqr[hlpqrI[hmIMmIMmIKm2[MaimH2(cjmGl[GrhH +lhIrZhE[rlYflrhfleqrAZhhq-fE-Q60Qc*QUN!M-N!L)N!Mr!!!!r`!!!)#3#2m +!N!F)J)!)#)#!#'B!!!#C!!!!riL)L2q)L)MrJ*!(r`$r!2m!r`$rr`!!rrm!!(H +3#!$rrrm!rrrrIj!)!2q3"rGrIrIhIhrhQIrrrfErrrm!GhGh!(GhG`"rN!I`N!3 +2N!5CCQDCQ@CQQ3!)($jr2K`)!!J8+P8U&!La-!-Ef-!-MB!3!L!"#%!%#"3L3B! +"!J5!`#%5$!3#!Iq!J)$r#!J)!(prI`$hprH!3#!!!J3)!)*%185#!3%"q(3L4im +A)R'rS,qp[Id&r9@J3%"9#J3%L%3L%4%L4)L"3L3BJ8)N'+S!J!#)!)!!!i4)-!` +#!3'!J%%q#!J8i`#3#bJ"!B!!!!!'GM%Z-#ia'P0jE@&ZG'9M)%GbC@&d9fpbDh- +JGM%Z-#ia!!!!&446H@eKER4PBb"(FQ9KG&G[FQYcUJ!!!3!!!!6P!!!$j3!!!)) +!3l()'K3!!!!F!))!"&G38di!!!!U8&*19!!!!$C3393M!!!!3RCPFR-!!!"18e4 +5)!!!!&S!!Irr!*!&3l!S!!(rr`!!!"i!3kr8!!(rr`!!!*S!3l!i!!,rr`!!!k! +!3l$d[r6rr`!!!m`!3krNa8-!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_2.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_2.0.hqx new file mode 100644 index 000000000..c17e8ed95 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_2.0.hqx @@ -0,0 +1,104 @@ +(This file must be converted with BinHex 4.0) +:#'4bBAFb,QGh!&T23NTD48*5!*!%"JN!!"#l2BS#!&T23NS!N!X"!!J!#3!!!!% +!!!!"!!%!N!3#m!*!!*!%![!#3!#3"!,`!N!&+!2m!%J!5!"M!!%!N!3"!3!!!"! +!!3!9!!!*5'9XGQ9dD@0K!*!%![!#3!#3"!,`!N!&+!2m!%J!5!"M!!%!!!!#!!! +!!J!!!CbCN!6rr`&Zrj!'!@IrrfCQ-c-"E[rrCQB!!!(V!!(rN!J!!`#3#3%J(d5 +!28$rb%+R,`a)E[qU2c`J$URV5'lriNKZrkSr2!!%UHY)E!!#5'lrR$mm)!kTk`! +!rqa)E[qF2c`!"+RV5'lrR!!#!!%!!3!!!!X!"3!12rf[S09lY$AK4d!#lGYUjad +KGES"VJ%!!"8!!!!-!*!*!3!!"P!!!3!5!!!!@J!!!!B"!!"'!!N!!!!"!*!'!8J +!!!+X!!!!&!!'!$B$!!!G!!!!B3!!!()!!!(#!!!!!J!!!!%!N"i"!!!i!!!!SJ! +!!%B!!!&+!!!!!3!!!!)!!!"2!!!"D!!!!%CJP!#3%!8!!)N!!!"U!!!!e3!!!-i +!!!!#!!!!!`#3(JJ!!)X!!!$M!!!""!!!!E)!!!!$!!!!"!!!!&)!N"S#!!"p!!! +"EJ!!!+N!!!'+!!!!!J!!!!8!U3!!!@i!!!"p!!!"LJ!!!BS!N!`#!!"e!!!!aJ! +!!)S!!!$Q!!!!!J!!!!B!LJ!!!-B!!!"e!!!!jJ!!!1B!N!d%!+S!!3!"!!!!!3! +!!6B!N!B"(2q3"J%-!*!'!3,rN!B"(!!!rj!)!*!,!DRV!!!"m!"#R4`!4QeB!!% +!!3!!"5J$r!")!%J!B`!"!!!!!3#3'JB&"3!!)!!"rrmZ!!!Jrj!%,J!!)2q3"#i +!!#$rN!3Z!!!Jrj!%!!3!!J!!!!)!!!%JQC!%rrm")2q3"J%JrrpQCM-c!5$rrfC +Q!!!")!!"rj!)!!-!N!N"!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#!!!2rr,J#3$J%!!2rr!*!'!D!#4J#3&3%!!J!!!!)!!!%!QC! +%rrm"!2q3"J%!rrpQCM-c!6crN!3c-`'m!!(rN!J!(iJ!)J#)!#)!!!%!'%+R5'` +!"NKZrl`r2#!1UHY)E[rX5'lr[$mm!!5TkdKX!!K)E[qZ2c`J$URV5'lrpJ!!rki +r2!!%UHY)E[qZ5'lr[!!"UHY)E[rB5'lr[$mm!!3"k`#3#2q3#J!!!!)!!!!#!!! +"!*Q3"2rr!3$rN!B"!2rrCQBc-`%!rrpQCJ!!!@`!!Iq3#!!IL!!L!)J!)J!!!3! +!!!`!3TdF!!!!!J!!!!`!3TdF!!!!!J!!!"3!3TdF!!S!N!P4!!!"m!"#!!!!4Qe +B!!%!!3!!"5J$r!")!!%!B`!"!!!!!3#3$`%!N!X'!!)!!3!#!!-!"!!&!!B!!!! +#!!J!L`!!!1-!!!%%!!!"XJ!!!*N!!!%F!!!!aJ!!!1-!!!%%!!!"PJ!!!+F!!!' +b!!!![`!!!8B!!!#,!!!"1`!!!*N!!!%E!!!!PJ!!!4X!N!J#!3!9!!!!$!#3"[r +r!*!(!3#3"6J!!!#L!!!!4J!!!8S!!"a")%GbC@&d9fpbDh-JGQ9MG'pb)'4[Bh9 +YC@jdGGJ!!!%!!!!2e3!!$Y8!!!$Q)%G%)%&38%`"!*!A#'4bBAFb,QGh!!)!!!" +D6d*+@N9#8J#3$&T23NTD48*5!*!Bcl60iJ!!"JN!!"#l!*!-!TiP!8j238e"8&" +-!3#3(3&1*3&6594P8dP86!8!N"d"db8"BA4MEdGkDA$r!*!B'J!"!Dm#93!V!!8 +!+`!&!GS#@J!V!!8"fJ*k!!!!H!!2!!!!5!")!*!%![!#32rarqi$#3*5B`)&+!2 +m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3#3$K!!N!N3!2q +erkB2,3ZD!!J"!*!0'3%!!!-#!'$rN!LU9DT9UP@U93#3#(rrrrrhrrrrIrrhrhr +rprphrrrrGrrrrhIrhrphrrhrGrrGrhIrhIp9rphr9IrGreArl[p9rl[r9Ip9reA +r9IphhAIGGpehh9@r9Ip9qeAr9EY9re@l9Ip9[eAZ9IY9lP@l9Hj9ZeAZ9EY9kP@ +l9Dj9ZP@V9ET9UeAU9DT9VP@UUK@U9DT4UP@U4DT8UN@U9+T%UK@U4+T4UN5U%DT +%UK'U3+S4UJ5U%DT%UJ#U4+S!UN#U!+S%UJ#))SJLL#+))US!UJ#U!+S!UJ!4!+S +!4!#U!#)!UJ!L!)J!)J#)!#)!L!!J!)J!!J#)!!!!L!!!!)!!#!#!!!J!J!!!!!J +!!!#)4#)4L%3L%4%L4)J4)N5)J%!J%!J%!J%"!J3)%#"!J1"`1"`1"i2"J`F1($K +`i-')4#)!L%3L!"%L4!!4)N3!JN3S%#K%JJ'Cc'BcQFaQ-hHlhHjhZphZlYflGql +GZhGr[pr[pr[pr[lpqrI[hlpr(ir(ir(iI$limH2(MamqI(HlhIphZphrlYflrql +GZrppZpI[elYprM0Qc*NcCXbCUT!)c*!)L*!)r`!!!2m!!!#!N!Mr!*!(#)#!#!L +!J!KQ!!!!Q3!!!2q)L)MrL)L)ri#3"rm!r`$r!2m!rrm!!2rr!!"hN!J!rrrr!2r +rrhq3#!$rN!IhIhrhphprpjRrrrpQrrrr!(GhG`"hGhF!Ij!(m*!%$j!%Q@CQQCP +QCTN!#"`qIciF#!!)&#T9+K3)X6!$'pM!$)f!%!)J!3K!"!J8)N'!!3)%J-!K%J` +%!J(rJ)#!r`J)#!"rIhm!prIhJ%!J!!)%#!##4$P%JJ%"!IKd)NH2&b*a[k#r[Eh +p"Ie9S%"!93S%")K%)K%4)N5)J8)N')&#*"LU!)!!L!#!!!1%5$!-!J%"J)""2JJ +)&1-!N!S'C!!#!!MrN!Emr22c"3Arrf4N!J,Gh3J)"JEbmJJ)K)4'4J!!TD8!N!6 +8e!)#Uk[UkKmIYlF8&!!!C'34%9C@,#`&"C!!N!"aF6Sk`*!'J*!'3*!'!*!'rj! ++c-crN!5CQIq3"'CQrj!%-c2rN!3!!2rrc-crN!6-N!6rrmc-QCRrrmc-CQErrmc +--c2rrmc-!!$rrjQCrj!%QCR-c2rrQC!%rrqCQ@CQrrqCQ6-crrqCQ3!!rrpQC[q +3"'CQc-crrfCQQCRrrfD3"2rrCQBc-rrrCQB!!2rr-c2rN!3c-mc-rrmc-jQCrrm +c-fCQrrmcN!6rrc-c!!$rr`!!rj!%!!$-c2rr!!#CQIrr!!"QC[rr!!!c-rrr!*! +%c-crN!6-c2rrc*!%rrqCQFc-rrpQCXc-rrmc-mc-rrm!!-b3"2rrc*!+QCR-N!4 +QCXb3"$-cc*!%!!$-c*QCrrr-c*QCc*!%QC!%c-bCQ@CQc-bCQ6-cc-bCQ3!!c-a +QC[rrc-aQCXb3"'CQQCR-c'D3"-c-CQBc-mc-CQB!!-c--c2rrmc--c2-N!3c-jQ +Cc-`c-fCQc-`cN!6-c$-c!!$-c!!!rrr-c!!!c*!%!!#CQFc-!!"QCXc-!!!c-mc +-!*!%QCRrN!5CQIrrc-bCQIrrQC!%rrpQCTQCrrmc-jQCrrm!!*QCc-crrjQCc*! +%QCR-c*Q3"-c-CQDCQFc--c1CQFc-!!#CN!6rrjQ3"-c-QC!+CQDCN!3c-jQ3"!! +!QCPQC[rrQCPQCXc-QCPQCTQ3"'D3"*QCCQBc-jQCCQB!!*QC-c2rrjQC-c2-c*Q +C-c1CN!3c-fCQQCNcN!5CQ6-c!!#CQ3!!rrqCQ3!!c-bCQ3!!QC!%!!"QCTQC!!! +c-jQC!*!%CQErN!4QC[rrc-aQC[rrQCPQC[rrCT!%rrmc-fCQrrm!!'CQc-crrfC +Qc*!%CQE-c*QCCQE-c'D3"-c--c0QCXc-!!"QCTQCrrpQCTQCc-aQCTQ3"'CQQCP +QN!5CQ6-cCQDCQ3!!CT!%rrpQN!6-c'D3"*QCCT!+-c0QN!3!!'CQ-c2rrfCQ-c2 +-c'CQ-c1CQ@CQ-c0QN!3cN!4QCM-c!!"QCJ!!rrpQCJ!!c-aQCJ!!QCPQCJ!!CT! +%!!!c-fCQ!*!%-c2rN!3c-rrrc-`c-rrrQCNc-rrrCQBc-rrr-j!%rrm!!$-cc-c +rrc-cc*!%-c2-c*QC-c2-c'CQ-c2-c$13"-c-!!!c-jQCrrmc-jQCc-`c-jQ3"$- +cQCPQCM-cQCNcN!5CQ3!!-c0QC[rr-c0QCXc--c0QCTQC-c0QN!3c-fCQ-j!%CQB +!!$13"2rr-j!%c-`cN!5CQ613"'CQ-j!+!!!c-`!!rrmc-`!!c-`c-`!!QCNc-`! +!CQBc-`!!-j!%!*!'rj!%!!$rrmc-!!$rrjQC!!$rrfCQ!!$rrc-c!!$rr`#3"-c +-rrm!!-b3"!!!c-bCQ3!!c-aQCJ!!c-`c-`!!c-`!N!5CQIrr!!#CQFc-!!#CN!3 +!!*QCCQB!!*QC-c-!!*QC!*!%CQErr`!!CQE-c!!!CQDCQ3!!CT!%!!"QCM-c!!" +QCJ#3"$-crrm!!$-cc-`!!$-cQCN!!$-cCQB!!$13"!!!-c-!N!Err`#3"-c-!*! +%QCN!N!4QCJ#3"$-clZi!N!6Gh3#3",Zl!*!%UUS!N!5)L!#3"(Gh!*!%998!N!4 +%4!#3"#)L!*!%%4%!N!EZlJ#3"0hG!*!%ZlX!N!5UUJ#3")L)!*!%GhF!N!4993# +3"%4%!*!%)L)!N!34%3#3"ZlZ!*!%hGd!N!5lZ`#3"+UU!*!%L)J!N!4hG`#3"&9 +9!*!%4%3!N!3L)J#3""%4lT!'hC!'Zj!'UT!'L*!'Gj!'9C!'4*!')T!'%C!'!*! +*"!#3"J%!!!(rN!B!N!N"rj!'!*!(,3!"rj!'!*!(@J!"rj!'!*!(K`!"rj!'!*! +(Y!!"rj!'!*!(i3!"rj!'!*!'!3i!!Iq3"J#3"J%l!!2rN!B!N!N$!*!'rj!'!!! +!![q3"J#3#3,rN!B!N!Hd!!(ZlJ#3")L)!*!(!3!!lZi!N!4993#3"3%!N!6rr`# +3")L)!!!!!Iq3"-c-rj!%!*!'!I3!!J!*!!!!")!!N#%'T!!!i"Arr`!#!!N!!!! +*!!$rr`!#kci!N!6J&rrr!!,Y`J#3"1!Brrm!!Zj0!*!&aIrr!!)!"!")!!!!")! +!!!N!!!!%J!!!CIrr!!*8+`#3"@Err`!#9(-!N!9Srrm!!P8Y!!)!")!!!!5!!&@ +R!*!&Irrr!!*9X3#3"Ahrrm3#9EN!!)rN!!$rrm!#9KJ!!!!'!%J!!!!%J!!!#3! +!!!5!!!!*!!!!")!!!-Irr`!#EqF!N!9Trrm!![##!*!&!J!5!!!!")!!N!4Vrrm +!![$d!*!&EIrr!!,aQJ#3"1!!rrm!!P0X!*!&!3!'!")!!!!%J!!!!3!!!!5!!!! +"!!!!")!!!!*6T`#3"2!!rrm!!`Nb!*!%m!(rr`!%!!N!!!!%J!!!!3!!!!5!!!! +!m!Arr`!$#@-!N!6J(rrr)!-*I3#3"1!'rrmJ!`!'!!N!!!!%J!!!#3!!!!5!!!! +"!!!!")!!N!AJ)[rr!!-+R3#3"1!%rrm!!`UY!!)!!3!!!!5!!!V$!*!%i!2rr`! +$#Y-!N!6`"[rr!!-,*`#3"2!(rrm!!`ZN!*!%!B!!!3!!!!X!"3!12rf[S09lY$A +K4d!#lGYUjadKGES"VJ!#!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ%d!!B +!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!Hi!"3!!!!X!"3!12rf[S09lY$A +K4d!#lGYUjadKGES"!J!%!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ%!!!% +!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!1i!!J!!!!X!"3!12rf[S09lY$A +K4d!#lGYUjadKGES!r!!'!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ!Z!!8 +!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!2)!"!!!!!X!"3!12rf[S09lY$A +K4d!#lGYUjadKGES!9J!$!!!!#`!&!!irrDqJeAZd0H&(3!,YffVR(5&eZJ!)!!- +!!!!,!!3!%6rml+-)+"'F@54!!iZfb%KMc82P!&B!!!!S!J#!!!!$"RBb,M!Z-4T +6H@eKER4PBb"(FQ9KG&G[FQYc)(Bb,M!Z-3!!!"888hPYB@jdC@-J4h*PBA4AEh* +VFkS!!!%!!!!2e3!!$Y8!!!$Q!%CLD"S8!!!!(!$Q!!PA8&01!!!!8P"56P3!!!" +H8%&8)`!!!'T3E&48!!!!GNji4@3!!!##4h*%8`!!!)j%B8K6!!!!QN&58R-!!!# +QGQ9bF`!!!,*69&)J!!!![J!"rrm!N!9'ApJ!!Irr!!!!(J"'Aq`!!Irr!!!!QJ" +'AhJ!!Irr!!!$S!"'Ah3!!Irr!!!+#!"'B#3!!Irr!!!+%!"'ArJ!!Irr!!!,&!" +'Ap3!!Irr!!!0$!"'Am!!![rr!!!1N!!!4PrN[r6rr`!!$V`!4Pr3BkB!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_P_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_P_1.0.hqx new file mode 100644 index 000000000..1eaa55c6c --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/indeterminate/GreatWorks_P_1.0.hqx @@ -0,0 +1,98 @@ +(This file must be converted with BinHex 4.0) +:#A"KD@jd-5jRG`"36P4(@N9#8J#3"!pJ!!!&Cbd)!*$r!*$r!!#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!2%!"a!(J!!#3K!"rJ!$"!)!32d!!!(G!2%!"a!)3!!#3K!"r3! +#!J"!r3!!!Gd!m3!8%"!V-11L)aF6JX1%Xi0'$%9Q'&R!hJ$a!"-S%!a*%L8NQ54 +$*%6+"-N54CNNCGd!m3!6+"$SK$)95&&%!K$%LJK3S%843NAG!2%!%d33+2c5&8K +4Ji)64)S)8+"&%Aj&h3$a!"0m%#L"%JL)88"#&%5+#&#J44&!4Gd!m3!6JJKS56) +)K*%N3b6%LJ6*%Nd4*%AG!2%!&))(U$$*L)-4%i,$*)Q$4J`e%4K%`0i!k!!!!Y- +!k!!!!Y-!k!!!!Y-!Z3#j!,N!Z3#j!2%!!3(!lJ!"!F$J!2%!!!AY!!%"81!!m3! +"Hi$Y!!$li!$b!!%"9H`!!99!i3$b!!%Irq`!!Armi3$b!!&991`!!499i3$c!!! +(k,m!X1)!m`!!"HK9!&$L!2-!!!(Sr`$!iJ$b!!%99H`!!998i3$b!!)$qi$Y!!( +lm1%!m3!!9Hd!!3&9i!$a!!%I`1i!!3(mi!$a!!%"31i!!3&!i!$`!!!JlJ!!"pm +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3$a!!%99IJ!!"Ab93"8j3$b!!-$phGiq3!!1r, +l!2MP!2)!"&GhGh9!qJ!!&I*9!&6P!2-!!3(hrRF!F2S!!$rbG`"mj3$c!!!%r3! +!"2S!!"$b!!!8j3$c!!!hr(F!J2X!!$rbG`"mj3$c!2Yh!%$l!!!AmRF!G18!p!! +!!rYh!(Ml!!!rmRF!I18!p!!!"2X!!!6l!!!3mJ!!&18!p!!!(rThq`!!2r*h!(M +P!23!!"IkGrX!!"IbG`"dj3$d!2Ph!%$m!!!rmRF!I18!p3!!!IN!!"$m!!!3mJ! +!&18!p3!!!rPh!(Mm!!!rmRF!I18!p3!!"IPh!(6m!!!AmRF!G18!p3!!$rPh!(E +m!!!rmRF!I18!p3!!%2N!!!(m!!!3mJ!!&18!p3!!0rKh!)$p!!!rmRF!H18!p3! +!9rKh!%$p!!!AmRF!G18!p3$hG`"!r3!!2r*h!(cP!1B!!"$b!!!8j3$f!!!"phF +!F2d!!$rbG`"mj3$f!!!"phF!F2d!!"IbG`"dj3$f!!!$phF!H2d!!$rbG`"mj3$ +f!!!%p`!!"2d!!"$b!!!8j3$f!!!,phF!F[d!!$rbG`"ij3$f!!!(phF!G2d!!"I +bG`"dj3$f!!!ApRIp!!!rmRF!I18!pJ!!%2F!!!(p!!!3mJ!!&18!pJ!!0rCh!)$ +q!!!rmRF!I18!pJ!!&rChr3!!&r*h!(6P!2B!pAF!32i!!$rbG`"mj3$f!!"!pJ! +!32i!!"$b!!!8j3$f!29h!%$q!!!rmRF!H18!pJ$eG`"!rJ!!&r*h!(6P!2B!!2I +fG`"JrJ!!2r*h!(cP!2F!!!(e!!!3rJ!!%2)!!"6P!2F!!!(eG`"`rJ!!2r*h!(c +P!2F!!!(eG`"`rJ!!&r*h!(6P!2F!!!(eG`"`rJ!!2r*h!(cP!1B!!"$b!!!8j3$ +h!!!$pAF!H2i!!$rbG`"ij3$h!!!"pAF!F2i!!"IbG`"dj3$h!!!$pAF!H2i!!$r +bG`"mj3$Q!!!3mJ!!&18!p`!!"r9h!(6q!!!rmRF!I18!p`!!"r9h!(6q!!!AmRF +!G18!p`!!"r9h!(6q!!!rmRF!I18!p`!!"28!!!6q!!!3mJ!!&18!p`!!!r9h!($ +q!!!rmRF!H18!p`!!"r9h!(6q!!!AmRF!G18!p`!!"r9h!(6q!!!rmRF!I18!p`! +!"28!!!6q!!!3mJ!!&18!p`!!"r9h!(6q!!!rmRF!I18!p`!!"r9h!(6q!!!AmRF +!G18!p`!!"r9h!(6q!!!rmRF!I18!p`!!"28!!!6q!!!3mJ!!&18!p`!!!r9h!($ +q!!!rmRF!H18!p`!!"r9h!(6q!!!AmRF!G18!p`!!"r9h!(6q!!!rmRF!I18!jJ! +!%2)!!"6P!2F!!!2eG`"irJ!!2r*h!(cP!2F!!!(eG`"`rJ!!&r*h!(6P!2F!!!2 +eG`"irJ!!2r*h!(cP!1B!!"$b!!!8j3$h!!!"pAF!F2i!!$rbG`"ij3$h!!!"pAF +!F2i!!"IbG`"dj3$h!!!"pAF!F2i!!$rbG`"mj3$h!!!"p3!!%2i!!"$b!!!8j3$ +f!!$hpRF!B2i!!$rbG`"mj3$f!29h!%$q!!!AmRF!G18!pJ$eG`"!rJ!!2r*h!(c +P!2B!!%$f!!"!rJ!!%2)!!"6P!2B!pAF!32i!!$rbG`"ij3$f!!!ApRIp!!!AmRF +!G18!pJ!!0rCh!)$q!!!rmRF!I18!pJ!!%2F!!!(p!!!3mJ!!&18!pJ!!&rChr3! +!2r*h!(cP!2B!!!IhG`"dr3!!&r*h!(6P!2B!!!rhG`"fr3!!2r*h!(cP!2B!!!6 +h!!!%r3!!%2)!!"6P!2B!!!2hG`"ir3!!2r*h!(MP!2B!!!(hG`"`r3!!&r*h!(6 +P!2B!!!(hG`"`r3!!2r*h!(cP!1B!!"$b!!!8j3$e!!!hq(Im!!!rmRF!I18!p3! +!9rKh!%$p!!!AmRF!G18!p3!!0rKh!)$p!!!rmRF!I18!p3!!%2N!!!(m!!!3mJ! +!&18!p3!!#rPh!(,m!!!rmRF!H18!p3!!"IPh!(6m!!!AmRF!G18!p3!!!rPh!(M +m!!!rmRF!I18!p3!!!IN!!"$m!!!3mJ!!&18!p!!!0rThq`!!2r*h!(cP!23!!"I +kGrX!!"IbG`"dj3$d!!!IqRIl!!!rmRF!I18!p!!!"2X!!!6l!!!3mJ!!&18!p!! +!!rYh!(Ml!!!rmRF!H18!m`$lG`"!q`!!&r*h!(6P!2-!!$ImG`#!q`!!2r*h!(c +P!2-!!!6p!!!%qJ!!%2)!!"6P!2-!!3'hrRF!-2S!!$rbG`"mj3$b!!4AGhGe32S +!!"IbG`"dj3$b!!-(phGmq3!!2r*h!(cP!2%!!499q!!!%2)!!"6P!1B!!$rbG`" +ij3$Q!!!AmRF!G18!jJ!!2r,r!2cP!1B!!"Ab93"8j3$Q!!!rmVm![18!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!LY-!!!%!!!!%j3!!!q8!!!##6%p54&G"8P-%!*!A#A"KD@jd-5jRG`) +!!J"36P4(@N9#8J#3#J)!8%j84eT&3P)!N"M2Y-d4!!!2B!!!"@F!N!`#"L8"690 +09%&38%`"!*!G!SiP!8e958e"8&"-!3#3(3+K*3&1590*3dp%-!-!N"JD!!%"V`* +9!#X!"3!V!!8"fJ*D!#X!"3(D!RS!!!"i!!m!!!")!%J!N!3#m!*!rr(rlJ-*!P* +M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*!1%!# +3#4!!rlArTJmY#jS!#!%!N!dC!3!!!`)!B2q3#+T9UP@U9DT9!*!)IrrrrrIrrrp +rrrIrIrrhrhIrrrphrrrrGrrIrhIrrIphrphrGrrGreArhIp9rphr9IrZreArZrp +9reAr9Ip9rhIGGpehhAIG9Ep9reAl9Ip9ZeAr9EY9re@r9Hj9qeAZ9EY9lP@l9Hj +9ZeAU9EY9VP@k9DY9ZP@V9HT9UP@Z9DUU&DT9UP'U9DT&UP5U4DT8UN5U&DT%UP' +U4+S4UN5U%DT!UK'U"+S4UN5U!+T%UJ#U3+S!UJ5U!)JLL#+))SJLUJ#U!+S!UJ# +U!"%!UJ"%!+S!)J#U!#)!L!!L!)J!)J#)!#!!L!!#!)J!!!#)!!!!J!!)!)!!#!# +!!!!!#!!!!)K%)K')4#)4%5*%L"%L4)L!3#!3#!3#!3%#"!J3)%#!i(!i(!i(Jm' +$"`iF1($J`BK%)J#)4#)!%5*%!"%L4!##4#J3+%5#!CR-CM1Cc'BcGl[GlRHlhHl +ZhEYhlYflGhqrhqrhqrhqr[hlpqrI[hmIMmIMmIKm2[MaimH2(cjmGl[GrhHlhIr +ZhE[rlYflrhfleqrAZhhq-fE-Q60Qc*QUN!M-N!L)N!Mr!!!!r`!!!)#3#2m!N!F +)J)!)#)#!#'B!!!#C!!!!riL)L2q)L)MrJ*!(r`$r!2m!r`$rr`!!rrm!!(H3#!$ +rrrm!rrrrIj!)!2q3"rGrIrIhIhrhQIrrrfErrrm!GhGh!(GhG`"rN!I`N!32N!5 +CCQDCQ@CQQ3!)($jr2K`)!!J8+P8U&!La-!-Ef-!-MB!3!L!"#%!%#"3L3B!"!J5 +!`#%5$!3#!Iq!J)$r#!J)!(prI`$hprH!3#!!!J3)!)*%185#!3%"q(3L4imA)R' +rS,qp[Id&r9@J3%"9#J3%L%3L%4%L4)L"3L3BJ8)N'+S!J!#)!)!!!i4)-!`#!3' +!J%%q#!J8i`#3#bJ"!B!!!!!'GM%Z-#ia'P0jE@&ZG'9M)%GbC@&d9fpbDh-JGM% +Z-#ia!!!!&446H@eKER4PBb"(FQ9KG&G[FQYcUJ!!!3!!!!6P!!!$j3!!!))!3l( +)'K3!!!!F!))!"&G38di!!!!U8&*19!!!!$C3393M!!!!3RCPFR-!!!"18e45)!! +!!&S!!Irr!*!&3l$i!!(rr`!!!"i!3l"3!!(rr`!!!*S!3kr%!!,rr`!!!k!!3kr +d[r6rr`!!!m`!3l"i!,-!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_1.0.hqx new file mode 100644 index 000000000..c1942aed5 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_1.0.hqx @@ -0,0 +1,104 @@ +(This file must be converted with BinHex 4.0) +:#'4bBAFa,Q*h!%*AC(*#9fYc!*!%&$J!!!&L)1*#9fYc3PGNFN*AC()!N!8"!*! +(!3#3"J%(!*!%")m!#3!!!!N!N!`"!*!%"`!"!!m!!!")!%J!N!3#m!*!rr(rlJ- +*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*! +1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!!!3F!N!J""`#31!C(C@jPGQ%!!!!%!!B +!!"&%!!!!F!!!"DJ!!!r-!!B!!"'m!!!6$!!!!!)!N!3#fJ)SJ!%!!3!*!!!!#3! +!!!%!N!8)!!%!!!!"!!!!!J!"!%N!!!!N!*!&'3!C!!!!$!#3"5%!!2rr!*!*J!# +!!)3!"J#!!!S!!!8S!*!@rj!)!!!J8)L3"!8#!*!%(#)L)K`!!!"9S%"!93S%"!! +!ULVU#[S#rJ!!!,m![lq`N!3!!+pIVem0#`d,!!"hLBq2GjMiq!!!`fBmCX0Q2'B +!!!JU&'-8+JL!!!!!3&aFA%"q!!!!#"`qIrIM`B!!!!!3%2jm1'a%!!!!($jrIhm +q(!!!J%!J!!)%#!!!!!%"%"!"!4!3!!!4)N3!%5*%!!!!99@UUP99UUS!!,%`!a[ +B`!b0!!#)4#)4%5*%L!!!J)""2JJ)&1-!!+S!J!#)!)!!!!!3N!8SaLJ!!!JF)X' +!!3)%!!!)&#*"J!%#"!!!ri#!J2m)#!J!!2Kd)NH2&b*a!!#U[k#rU[X+q`!!m*! +%$j!%!!!!#"`qIciF#!!!3+!!!!3+!*!%c!!!!$-!N!9%)J#)4#)!L!!!c$2--m` +cc$-!!)!3!L!"#%!%!!#"3L3BJ8)N'!!!!i4)-!`#!3%!!)J8)N')!+S!!!##4$P +%JJ%"!3!!%#"8U[m#"!J!!)$!)4)-"!)"!!!!Ihpr!2Ihp`!!m(JN3SF2%L%!!,q +J[lfpr3Ap!!#CCQDCQ@CQQ3!!!!J8+P8U&!J!!)!!!!!)!*!&J!!)!)!!#!!!!)J +!)J#)!#)!!!#U!"%!UJ"%!!!!L#+))SJLL#)!!+T%UJ#U4+S!!!#U4+S4UN5U%3! +!UN@U9+T&UP3!!+T9UP@U9DT9!!"9ZP@V9ET9U`!!9EY9lP@l9Hi!!&@l9Ip9ZeA +r!!"hhAIGGpehh3!!9IrZreArZrm!!(IrhIphrphr!!"rrrIrIrrhr`!!L!!!!)J +!N!@)!#!!L!!#!!!!UJ!L!+S!)J!!!+S!UJ#U!+S!!!#U3+S!UJ5U!!!!UN#U%DS +%UK%!!+T%UK@U4+T4!!#U&DT9UP'U93!!9HT9UP@Z9DS!!&@l9HT9Ze@Z!!"9[eA +Z9IY9lJ!!9Ep9reAl9Im!!&Ar9Ip9reAr!!"9rphr9IrGr`!!GrrrrhIrrrm!!(r +rrrrhrrrr!!#UN!J!!-b3#!!!L*!)!!#!N!J!!2m!!!$r!*!&r`#3#Iq)L)MrL)L +)!!$rJ*!(!!!4)N5)%5*%L!!!L%3L%BK%)K%!!)-($K`iF1$"!!$JF$JF$JH$`3! +!!3)%#"!J3)!!!)"!)"!)"!)"!!##4#J3+%5#!3!!J8)N'"JN3S%!!!$r!2m!r`$ +r!!$rr`!!rrm!N!4hN!J!!(q3#!!!!2rrr`$rrrm!!!$rN!F!!!"hGhF!GhGh!!! +!Ij!(!!$ZhEYhlYflG`!!Gl[GlRHlhHi!!$0Qc*NcCXbC!!#Cc'BcQFaQ-`!!r[h +lpqrI[hm!!(qrhqrhqrhq!!"pZpI[elYprJ!!IVhEjqIE[Ai!N+$rIb"S!!JJ8#) +!rhi!1%K"`[`!12pp3N(3J6!`##i!!%je6PB!!#"Z!3!"!!%#!!B"!!!+!!!+&!! +!!"lrN!B!!!!K!*!*4Icmmr-&"3!!!)RbmJJ)K)3!!!$0hGd)#!B'!!!"%3)#Uk[ +UkJ!!!98!!)#!%4%!!!'C!*!%e03!!!!HhC!'!!!!(Xb3"J!!!"klN!B!!!!HUT! +'!!!!(SL3"J!!!#&QN!B!!!!K4*!'!!!!)5+3"J!!!#%!N!NK6-`1%`#3"5&-c"` +R!*!&)8c-+M`!N!8K6-`i8!#3"5&-c%CP!*!%!99&)%c-!*!%!98h#dc-!*!%!98 +Sq%c-!*!%!98DiNc-!*!%!98-cdc-!*!%!98!!%c-!8J!!!&9!!"-c!pE!!!"93! +!6-`GF!!!!98!!%c-+i3!!!&9!!"-c$QC!!!!cB8H)hd!N!A0K4iBCJ#3"Ff&(M$ +-!*!&cB8H568!N!A0K4jKR!#3"Ff&(RS&!*!%!99hdS8H!*!%!99IDB8H!*!%!99 +(!i8H!*!%!98ZQS8H!*!%!98@-i8H!*!%!98!!)8H!MJ!!!&9!!#&(KUH!!!"93! +!K4ic"`!!!98!!)8H5fd!!!&9!!#&(Q2A!!!!cEe`-S%!N!A0[A!LZ3#3"FfpF%9 +b!*!&cEe`D#m!N!9&[A#+j`#3"8@pF+fP!*!&4DU%[A!!N!9&KmHpF!#3"!&9C3k +pF!#3"!&93P'pF!#3"!&9(jLpF!#3"!&9!!#pF!-S!!!"93!![A!Pi3!!!98!!,e +`5*i!!!&9!!#pF'YA!!!"%3!![A#1&!!!!-he`N'&!*!&cIA#,3X!N!A0pF*D&`# +3"8Ae`SFS!*!&4IA#Y$-!N!9&pF,K43#3"8AG0[A#!*!&4E!PpF)!N!9&JaRe`J# +3"!&99JMe`J#3"!&9+2he`J#3"!&9!!$e`J3B!!!"93!!pF)a*!!!!98!!2A#AM8 +!!!%4!!$e`SY!!!!"%3!!pF+i8J!!!-hrrfB,,K3!!!$0rrp8MLi8!!!!cIrrH`J +Z&!!!!%Arrk'(,K3!!!"&rrr)!5i8!!!!4IrrlRmZ&!!!!%AV#2rr,K3!!!"&a)R +rrbi8!!!!4Ci2rrmZ&!!!!99hNIrr,K3!!!&984Irrbi8!!!"95i8rrmaN`!!!98 +Z&2rr@!d!!!%4,K6rrhk-!!!"%5i8rrqP"J!!!4%Z&2rrbi8!!!"&rrq2@@CQ!!! +!4IrrJSeQCJ!!!%ArrjkeCQB!!!"&rrqkhfCQ!!!!4Irre`GQCJ!!!%Arrr-bCQB +!!!"&m+MrrfCQ!!!!4G4prrpQCJ!!!%@i9[rrCQB!!!"&R#[rrfCQ!!!!4B!%rrp +QCJ!!!99QC[rrD28!!!%4CQErri8F!!!"%@CQrrqK4`!!!4&QC[rr[@m!!!%4CQE +rrpQD!!!!([rrZ+HHZ!!!!"lrrl#0RVJ!!!!Hrrr#BCki!!!!([rre$LHZ!!!!"l +rrqB0RVJ!!!!Hrrrhj*ki!!!!([C)rrqHZ!!!!"lNF[rrRVJ!!!!HdThrrjki!!! +!(X$'rrqHZ!!!!"kZmIrrRVJ!!!!HRVMrrk"A!!!!(Tkirrqb,!!!!"kHZ2rra!) +!!!!HRVMrrpAA!!!!(TkirrrRVJ!!!"lrrq(fe`S!!!!HrrrHM0F+!!!!([rrjJl +A#J!!!"lrrqf4e`S!!!!Hrrre%pF+!!!!([rrr*EA#J!!!"llkIrre`S!!!!Hp'E +rrpF+!!!!(ZcNrrrA#J!!!"lPBIrre`S!!!!HhGrrrpF+!!!!(YF+rrrAZ3!!!"l +A#[rrhcX!!!!He`VrrqDq!!!!(YF+rrrZ3!!!!"lA#[rrpF-!!!!He`VrN!3!!!! +He`ViI[rr!!!!(YF+m2crr`!!!"lA#ZPjrrm!!!!He`VKprrr!!!!(YF+fR6rr`! +!!"lE)GF+rrm!!!!HiU6A#[rr!!!!(ZSQe`Vrr`!!!"laUGF+rrm!!!!Hq5[A#[r +r!!!!([rre`Vr83!!!"lrrpF+pmm!!!!HrrrA#["-!!!!([rre`VSbJ!!!"lrrpF ++i8J!!!!HRVMrrrrq!!!!(TkilL[rr`!!!"kHZ0aArrm!!!!HRVM+J2rr!!!!(Tk +iZ+[rr`!!!"kHZ+E8rrm!!!!HU(#HZ2rr!!!!(VT'RVMrr`!!!"l-'jkirrm!!!! +HhI+HZ2rr!!!!(Zr(RVMrr`!!!"lrrjkirQ%!!!!HrrqHZ1b-!!!!([rrRVMDYJ! +!!"lrrjkib1%!!!!HrrqHZ,F+!!!"%@CQrrrrrJ!!!4&QCZ2Crrm!!!%4CQE(XIr +r!!!"%@CQUiIrr`!!!4&QCSpIrrm!!!%4CQCc02rr!!!"%A@qCQErr`!!!)Q4k@C +Qrrm!!!#*VK"QC[rr!!!!LFSlCQErr`!!!)RQBQCQrrm!!!#*rrpQC[ea!!!!LIr +rCQEK5J!!!)RrrfCQa4m!!!#*rrpQCUMh!!!!LIrrCQD-c3!!!4%Z&2rrrrd!!!% +4,K6CK[rr!!!"%5i8X`crr`!!!4%Z&)b0rrm!!!%4,K4Q%rrr!!!"Q5i82jArr`! +!!CP$$#i8rrm!!!'CDBXZ&2rr!!!!LC!!"5i8rrm!!!#*YS-Z&2rr!!!!LGcp,K6 +rr`!!!)Rrrbi8r)%!!!#*rrmZ&0B(!!!!LIrr,K5[L!!!!)Rrrbi8L3i!!!#*rrm +Z&'+2!!!"%3!!pF,e[J!!!4%!!-LhpF)!!!%4!!#EUrA#!!!"%3!!ETVe`J!!!CN +!!%'2pF)!!!'C!!!8IIA#!!!"Q4L-!!$e`J!!!CP&R3!!pF)!!!'CFUN!!2A#!!! +!LCqk!!$e`J!!!)R-a3!!pF)!!!#*pF)!!2'U!!!!LIA#!!$%RJ!!!)Re`J!!Pid +!!!#*pF)!!'U#!!!!cIA#!!!pF3!!!4%!!,e`[@d!!!%4!!#DYle`!!!"%3!!Grk +pF!!!!CN!!&9"[A!!!!'C!!!bLEe`!!!"Q3!!$mZpF!!!!CN5l!!![A!!!!'C0DN +!!,e`!!!"Q9KL!!#pF!!!!)Pl(`!![A!!!!#*RGJ!!,e`!!!!LEe`!!#k5!!!!)Q +pF!!!Pim!!!#*[A!!!(65!!!!LEe`!!"5'3!!!-fpF!!!,e`!!!%4!!#&(S8F!!! +"%3!!E,L&(J!!!CN!!&45K4i!!!'C!!!lkB8H!!!"Q3!!)i+&(J!!!CN!!!XCK4i +!!!'C$8`!!)8H!!!"Q5@e!!#&(J!!!CNq'`!!K4i!!!'C9S3!!)8H!!!"Q@lV!!# +&(J!!!)Q&(J!!JZB!!!$0K4i!!'U!!!!!cB8H!!"5&`!!!-f&(J!!1E%!!!$0K4i +!!#&)r[rrr#"3)8X!"J!!'-Mrk%jH6R8!!J!#!!B!"J!#!$`!!!&S!*!)rrd!!!! +-!!!!"!#3#``!!!!%!!!!$!#3"``!!2rp!*!0!3#3"2rb!!!!$J!!!!i!!!#GJ!! +!,3#3"`)!N"Vrr8c-+M`!!!!66-`i8!!!!"4-c%CP!!!!&88J6-`!!!!@0`Y-c!! +!!"FSq%c-!!!!'"VL6-`!!!!C$-rrr!!!!"S!!%c-!8J!'`!!6-`2@`!F!!"-c"e +`!"d!!%c-+i3!(J!!6-`jQ3!IK4iMI3!!!##&(KKQ!!$rqi8H--`!!!!LK4j*03! +!!#1&(Q'F!!!!*)8HHJ8!!!!PGp+&(J!!!#CIDB8H!!!!*dF$K4i!!!!S,TS!N!8 +T&M1&(J!!!#S!!)8H!MJ!+`!!K4iDRJ!X!!#&(M-(!#d!!)8H5fd!,J!!K4jMe`! +[[A!bJ3#3""!"!"'!!!"3J!!!Bi!!!9q!!!!"%!F!0J!!!(8!!!"+!!!"(J!!!!) +3!3#'J!!!2S!!!1'!!!$BJ!!!!a!#!)D!!!%0J!!!mi!!!B1!!!!%%!-!BB!!!'S +!!!#)J!!!NJ!!!!83!`"KJ!!"*`!!!)L!!!&2!!!!!3#3"3J!!3!!!!%!!!!#!!% +!53!!!$F!5J!!!"N!'3!!!!`!N!Mrr`#3#3F!N!8)!!%!!!!"!!!!!J!!!%N!!!! +*!*!&'3!C!!!!$!#3"5%!!2rr!!!!$!#3"3%!N!8)!!%!!!!"!!!!!J!A!%N!!!" +#!0N!!!!C!"N!!!!-!*!)rrm!N!N#!*!&#!!"!!!!!3!!!!)!1`"*!!!!*!"P!!! +!'3!C!!!!$!#3#2rr!*!*!`!!!!%!#!!$!!!!"!!!!!)!!3"*!!!!*!#3"4N!'3# +3$2rr!*!*!`!!!"%!#!!$!!!!"!!!!!)!!3"*!!!!*!#3"4N!'3!"!*!+rrm!N!N +"!"N!%!"4!!!!'8%J3Q9KCfaP9fpbDh-RFb"NFQ&h)'CTE'@Sp!!!!3!!!!%F!!! +!(!!!!%DUd1N!##m))'lrr#"S!+SLD!!-6T&`!&"2B!*`!(!!,`SUC(*KGc%ZBRF +`!!)!!!"#9f4b3PGVF`#3#N*AC(*#9fYc!*!Bcl69jJ#3"J&L!!#-SaiS5#!-CaJ +[$%kkq`JS3#Pm!!!!dJ"q'A`!!3#'@%mJ$#KZrra1ANje!!!5GJr`!#C19J!!51F +!'#CZ!"`SEJ!),`X[,J!B-#i!&NM!,`!`,J!55-![!#mZ!!`[$%kY$QSJ5b*V!!V +3k3#B,`JJ55*S!*a1N6P!!$"-lKJ!r`!!!!J!6J!#!G`#GJ!!!!`,3Q9KCfaP9fp +bDh-!!!%!!!!"(!!!!"`!!!"'!$Zja"XZ!!!!(!"'!!&h8'pc!!!!%P088L!!!!! +H!qRrr`#3#,rdrrm!!!!-!*!%`G-!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_P_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_P_1.0.hqx new file mode 100644 index 000000000..6d640c8a5 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/BeagleWorks_P_1.0.hqx @@ -0,0 +1,427 @@ +(This file must be converted with BinHex 4.0) +:#A"KD@jd-5jLG`"#9h"d3PGVF`#3"%pE!!!"BN'h3PGVFd*AF(4#9h"d!*!&!3# +3"`%!N!B""`#3"!3-!!N!!!!*!*!-!3#3"!F!!3!2!!!!5!")!*!%![!#32rarqi +$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3# +3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3%!!!%(!*!)!3F!N$J'4f9ZCACK!!"',J! +!#!J"D!*!!!J!N"Ir!!$rN!B!!Icmmr-&"3!#m[))#)5%!!2Gh3J)"JB!"!)#Uk[ +UkJ!&!!#!J"%4!!B!N!68e!!(hC!'!!M-N!B!#EZ3"J!+UT!'!!Z)N!B!$'D3"J! +04*!'!!iLN!B!$`#3"a"-c!i6!!!!%8c-(#F!!!!56-`U2!!!!"0-c$K3!!!!&%c +-4Q8!!!!945"-c!!!!"Bh#dc-!!!!&bMi6-`!!!!B'Z*-c!!!!"N-cdc-!!!!'J! +!6-`"5!!E!!"-c!pE!"`!!%c-(A!!(3!!6-`VK!!H!!"-c$QC!"q&(L0p!!!!))8 +H''B!!!!KK4i`c!!!!#+&(NNe!!!!)i8HBC`!!!!NK4jk"3!!!#9hdS8H!!!!*Pp +TK4i!!!!R4`1&(J!!!#JZQS8H!!!!+4BcK4i!!!!U!!#&(J)i!#X!!)8H'Ti!,!! +!K4ic"`!Y!!#&(NYY!#i!!)8HBpF!,le`-S%!!!!`[A!LZ3!!!$'pF%9b!!!!-Ve +`D#m!!!!c[A#+j`!!!$5pF+fP!!!!0DU%[A!!!!!fKmHpF!!!!$GP$Ve`!!!!1%* +4[A!!!!!j(jLpF!!!!$S!!,e`!bJ!1`!![A!Pi3!m!!#pF%LH!$d!!,e`DeF!2J! +![A#1&!!rpF*"K3!!!%$e`Ld,!!!!3IA#@KF!!!"#pF+(+!!!!%2e`V3c!!!!42A +#i88!!!"&h6Ee`J!!!%D`*IA#!!!!4i-CpF)!!!")9JMe`J!!!%NSrIA#!!!!5J! +!pF)%'!",!!$e`M%N!%`!!2A#AM8!63!!pF+,3!"1!!$e`VK5!%rrrfB,,K3!82r +r9)iZ&!"4rrpl##i8!&,rrk'(,K3!8rrrb!%Z&!"8rrrZIbi8!&AV#2rr,K3!9X5 +*rrmZ&!"ARJrrrbi8!&KhNIrr,K3!@9%ArrmZ&!"D,K6rrc'6!&XZ&2rr@!d!A#i +8rrpqM!"G,K6rrk8'!&iZ&2rrbi8!ArrrMePQCJ"Jrrq#M@CQ!'(rrjkeCQB!B[r +rZYpQCJ"MrrrA"fCQ!'6rrr-bCQB!CI#SrrpQCJ"Qe(hrrfCQ!'Hi9[rrCQB!D*` +VrrpQCJ"TJ!6rrfCQ!'TQC[rrD28!DfCQrrq&(!"XCQErrk&(!'eQC[rr[@m!EQC +QrrrCQJ"[rrqiTjki!($rrl#0RVJ!FIrr`Q'HZ!"brrr81*ki!(2rrqB0RVJ!G2r +rpq5HZ!"epNMrrjki!(ENF[rrRVJ!Gp+GrrqHZ!"i`-Errjki!(QZmIrrRVJ!HTk +irrqJ9`"lRVMrrl)X!(bHZ2rra!)!ICkirrr9e`"qRVMrrqHZ!(rrrq(fe`S!J2r +rhScA#J#"rrrQ$YF+!),rrqf4e`S!Jrrrp42A#J#%rrrmPYF+!)AlkIrre`S!K[4 +QrrrA#J#(l16rrpF+!)MPBIrre`S!LGhIrrrA#J#+e`VrrpHj!)[A#[rrhcX!M0F ++rrrQ[J#0e`Vrrqj!!)lA#[rrpF-!MpF+rj!%!*!!e`ViI[rr!*(A#[$mrrm!NYF ++kARrr`#6e`VKprrr!*6A#YTdrrm!PGXKe`Vrr`#@iU6A#[rr!*IU*YF+rrm!Q2' +Te`Vrr`#Cq5[A#[rr!*VrrpF+re%!Qrrre`Vhc`#FrrrA#["-!*hrrpF+k-S!R[r +re`VK5!#IRVMrrrrq!+#HZ1iVrrm!SCkih&Irr`#LRVM+J2rr!+1HZ,LVrrm!T*k +iTY6rr`#PU(#HZ2rr!+Dk4Tkirrm!Tm`ERVMrr`#ShI+HZ2rr!+R[ajkirrm!U[r +rRVMqB3#VrrqHZ1b-!+crrjkifVB!VIrrRVM)i3#ZrrqHZ,F+!+pQC[rrrri!X'C +QipRrr`#aCQE(XIrr!,*QCUZ(rrm!XfCQMerrr`#dCQCc02rr!,9e[QCQrrm!YT( +TCQErr`#hVK"QC[rr!,M+1fCQrrm!ZHCLCQErr`#krrpQC[ea!,[rrfCQi8S![2r +rCQE&(`#prrpQCUMh!,lrrfCQM-d![bi8rrrrr3$!,K6CK[rr!-%Z&,--rrm!`Li +8M)hrr`$$,K4Q%rrr!-3Z&$q9rrm!a8--,K6rr`$'DBXZ&2rr!-H3!!8Z&2rr!-L +fJbi8rrm!bGcp,K6rr`$+rrmZ&2b"!-[rrbi8eJF!c2rr,K5[L!$0rrmZ&)N1!-l +rrbi8BSm!c`!!pF,e[J$3!!$)YrA#!0%!!*ZVpF)!dJ!!ETVe`J$6!!""MrA#!03 +!!"4ppF)!e4L-!!$e`J$@4Cd!!2A#!0GbU3!!pF)!f*qk!!$e`J$Cc-8!!2A#!0V +e`J!!mDS!frA#!!$%RJ$FpF)!!*H0!0he`J!!DS)!h[A#!!!pF3$I!!#pF,eY!1! +!!*Uh[A!!i3!!GrkpF!$L!!"93Ee`!1-!!$+*[A!!j!!!$mZpF!$P%Z`!!,e`!1B +eU3!![A!!jeKL!!#pF!$SHam!!,e`!1QGf!!![A!!kVe`!!#k5!$V[A!!!*H2!1b +pF!!!G0)!lEe`!!"5'3$Z[A!!!#pF!1m!!)8HK4`!m!!!E,L&(J$a!!"88S8H!2) +!!$[TK4i!m`!!)i+&(J$d!!!,'B8H!2806!!!K4i!pL@e!!#&(J$h2KX!!)8H!2K +@K!!!K4i!q@lV!!#&(J$kK4i!!),Q!2Z&(J!!DS!!r)8H!!"5&`$pK4i!!$Qa!2k +&(J!!)8J!r`#3"NBZ!*!%!@J#3!!4![m-!2q3"!#3#!*!!!!"D!#3"k!!JJ!"!!S +!N!3"D!*!!*L#3!#3"!&S!N!!N!P)!!!!5!#3"3J!!3!)!*!&1l8`!*!'%PN!!!$ +r!!$rN!B!!Icmmr-&"3!#m[))#)5%!!2Gh3J)"JB!"!)#Uk[UkJ!&!!#!J"%4!!B +!N!68e!!(hC!'!!M-N!B!#EZ3"J!+UT!'!!Z)N!B!$'D3"J!04*!'!!iLN!B!$`# +3"a"-c!i6!!!!%8c-(#F!!!!56-`U2!!!!"0-c$K3!!!!&%c-4Q8!!!!945"-c!! +!!"Bh#dc-!!!!&bMi6-`!!!!B'Z*-c!!!!"N-cdc-!!!!'J!!6-`"5!!E!!"-c!p +E!"`!!%c-(A!!(3!!6-`VK!!H!!"-c$QC!"q&(L0p!!!!))8H''B!!!!KK4i`c!! +!!#+&(NNe!!!!)i8HBC`!!!!NK4jk"3!!!#9hdS8H!!!!*PpTK4i!!!!R4`1&(J! +!!#JZQS8H!!!!+4BcK4i!!!!U!!#&(J)i!#X!!)8H'Ti!,!!!K4ic"`!Y!!#&(NY +Y!#i!!)8HBpF!,le`-S%!!!!`[A!LZ3!!!$'pF%9b!!!!-Ve`D#m!!!!c[A#+j`! +!!$5pF+fP!!!!0DU%[A!!!!!fKmHpF!!!!$GP$Ve`!!!!1%*4[A!!!!!j(jLpF!! +!!$S!!,e`!bJ!1`!![A!Pi3!m!!#pF%LH!$d!!,e`DeF!2J!![A#1&!!rpF*"K3! +!!%$e`Ld,!!!!3IA#@KF!!!"#pF+(+!!!!%2e`V3c!!!!42A#i88!!!"&h6Ee`J! +!!%D`*IA#!!!!4i-CpF)!!!")9JMe`J!!!%NSrIA#!!!!5J!!pF)%'!",!!$e`M% +N!%`!!2A#AM8!63!!pF+,3!"1!!$e`VK5!%rrrfB,,K3!82rr9)iZ&!"4rrpl##i +8!&,rrk'(,K3!8rrrb!%Z&!"8rrrZIbi8!&AV#2rr,K3!9X5*rrmZ&!"ARJrrrbi +8!&KhNIrr,K3!@9%ArrmZ&!"D,K6rrc'6!&XZ&2rr@!d!A#i8rrpqM!"G,K6rrk8 +'!&iZ&2rrbi8!ArrrMePQCJ"Jrrq#M@CQ!'(rrjkeCQB!B[rrZYpQCJ"MrrrA"fC +Q!'6rrr-bCQB!CI#SrrpQCJ"Qe(hrrfCQ!'Hi9[rrCQB!D*`VrrpQCJ"TJ!6rrfC +Q!'TQC[rrD28!DfCQrrq&(!"XCQErrk&(!'eQC[rr[@m!EQCQrrrCQJ"[rrqiTjk +i!($rrl#0RVJ!FIrr`Q'HZ!"brrr81*ki!(2rrqB0RVJ!G2rrpq5HZ!"epNMrrjk +i!(ENF[rrRVJ!Gp+GrrqHZ!"i`-Errjki!(QZmIrrRVJ!HTkirrqJ9`"lRVMrrl) +X!(bHZ2rra!)!ICkirrr9e`"qRVMrrqHZ!(rrrq(fe`S!J2rrhScA#J#"rrrQ$YF ++!),rrqf4e`S!Jrrrp42A#J#%rrrmPYF+!)AlkIrre`S!K[4QrrrA#J#(l16rrpF ++!)MPBIrre`S!LGhIrrrA#J#+e`VrrpHj!)[A#[rrhcX!M0F+rrrQ[J#0e`Vrrqj +!!)lA#[rrpF-!MpF+rj!%!*!!e`ViI[rr!*(A#[$mrrm!NYF+kARrr`#6e`VKprr +r!*6A#YTdrrm!PGXKe`Vrr`#@iU6A#[rr!*IU*YF+rrm!Q2'Te`Vrr`#Cq5[A#[r +r!*VrrpF+re%!Qrrre`Vhc`#FrrrA#["-!*hrrpF+k-S!R[rre`VK5!#IRVMrrrr +q!+#HZ1iVrrm!SCkih&Irr`#LRVM+J2rr!+1HZ,LVrrm!T*kiTY6rr`#PU(#HZ2r +r!+Dk4Tkirrm!Tm`ERVMrr`#ShI+HZ2rr!+R[ajkirrm!U[rrRVMqB3#VrrqHZ1b +-!+crrjkifVB!VIrrRVM)i3#ZrrqHZ,F+!+pQC[rrrri!X'CQipRrr`#aCQE(XIr +r!,*QCUZ(rrm!XfCQMerrr`#dCQCc02rr!,9e[QCQrrm!YT(TCQErr`#hVK"QC[r +r!,M+1fCQrrm!ZHCLCQErr`#krrpQC[ea!,[rrfCQi8S![2rrCQE&(`#prrpQCUM +h!,lrrfCQM-d![bi8rrrrr3$!,K6CK[rr!-%Z&,--rrm!`Li8M)hrr`$$,K4Q%rr +r!-3Z&$q9rrm!a8--,K6rr`$'DBXZ&2rr!-H3!!8Z&2rr!-LfJbi8rrm!bGcp,K6 +rr`$+rrmZ&2b"!-[rrbi8eJF!c2rr,K5[L!$0rrmZ&)N1!-lrrbi8BSm!c`!!pF, +e[J$3!!$)YrA#!0%!!*ZVpF)!dJ!!ETVe`J$6!!""MrA#!03!!"4ppF)!e4L-!!$ +e`J$@4Cd!!2A#!0GbU3!!pF)!f*qk!!$e`J$Cc-8!!2A#!0Ve`J!!mDS!frA#!!$ +%RJ$FpF)!!*H0!0he`J!!DS)!h[A#!!!pF3$I!!#pF,eY!1!!!*Uh[A!!i3!!Grk +pF!$L!!"93Ee`!1-!!$+*[A!!j!!!$mZpF!$P%Z`!!,e`!1BeU3!![A!!jeKL!!# +pF!$SHam!!,e`!1QGf!!![A!!kVe`!!#k5!$V[A!!!*H2!1bpF!!!G0)!lEe`!!" +5'3$Z[A!!!#pF!1m!!)8HK4`!m!!!E,L&(J$a!!"88S8H!2)!!$[TK4i!m`!!)i+ +&(J$d!!!,'B8H!2806!!!K4i!pL@e!!#&(J$h2KX!!)8H!2K@K!!!K4i!q@lV!!# +&(J$kK4i!!),Q!2Z&(J!!DS!!r)8H!!"5&`$pK4i!!$Qa!2k&(J!!)8J!r`#3#J& +S!N!!N!3"D!*!!!!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3! +!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3! +!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3! +!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3! +!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3! +!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3! +!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@ +"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!b +a!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A +$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`! +!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@ +"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$ +2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3# +"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@ +"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!lX3$E03$rq$AmrqNe!Ir +rpc8!rrSe!2rb03$rp$8!rq8e!2rf03$rpc8"rrrq03$rrM8"rrq"0B%!c`!!0,% +!fc8!rrJe!2rp03$rk68!rrFe!2rk03$rmM8!rr3e!2rC03$rq$8!rrFe!2q"0B% +!c`!!HE%!h$8#rcArq68!rrde!2rq0Ilrr6AqrrderIrq03$rr6Aqrrie!2rq03$ +rrM8!rrier[rq03(r0Ilr!6ArrM8!rrier[rk0IlrqMAprrder[rq03(rrrie!rm +errrq0IlrqMAqrrie!Irrr68!rrder[q)0B%!c`!!P,%!h$8#rcArq6Amrrie!2r +q032r06ArrM8$rc8errie!2rq03$rrM8!rrie!2rq03Er06Ar06ArrM8!rrie"2m +e0Irrr68$rc8errie!2rq03$rr$8!rrie!2rl03$rrM8$rc8errie!2rq03$rrM8 +%rrme0Irq03$rq$8!rr`e!2rp03$rrM8!rrie!2q*0B%!c`!!LV%!h68!rrie!2r +k03$rr68$rc8errie!2rq0Ihr!M8errie!2rq03$rrM8!rrie!2rq03Er0ImercA +rrM8!rrie!rme0Irm03,r0Irp03$rq$8!rrFe!2rq03$rrMAprrie!2rq03$rrM8 +!rrie!2ri03$rr$8!rrde!2rq03$rrM8!riNeJ3$2!!#%X3$G03$rrM8!rrSe!2r +p03,r06Amr`)e0Irq032r06ArrM8!rrie!2rq0IcrrM8'rcAr0Imerrie!2rq032 +r06Arr$8"rrrl0IlrqMAqrrSe!2rq032r06ArrM8!rrie!2rq03$rrM8!rrie!2r +i03$rr$8!rrde!2rq0IcrL6@"!-m!!(ka!0ieq[rl03$rr68$rc8errXe!2rq032 +r06ArrM8!rrie!2rq03$rq68!rrie!2rp03$rrM8$rc8err`e![merrNe!2ri03$ +rqc8!rrie!rme0Irq03$rrM8!rrie!2rq03$rrM8!rrJe!2rm03$rr68!rrie!2q +&0B%!c`!!PV%!hM8!rr`e!2rl03$rr68$rc8errie!rme0Irq032r06ArrM8!rri +e!2rq03$rrM8!rrde!2rq03$rr68!rrie!rme0Irm032r06ArrM8!rrie!2rm03$ +rrM8!rrXe!2rq032r06ArrM8!rrie!2rq03$rrM8!rrie!2ri03$rr$8!rrde!2r +q03$rrM8!riNeJ3$2!!"aX3$H03$rr$8!rrXer2rp0Ilrr6AprrierIrq03$rr6A +qrr`e!2rq03$rr$Aqrrie!2rm03$rrM8!rrier[rk0IlrqMAprrderIrq03$rrM8 +!rrie!2rp03(rrrSe!2rm03$rr68!rrder[q)0B%!c`!!%V%!Yc8!rlme!2q"0G% +eJ3$2!!!@X3#l03$rrM8!rlme!2q"0G%eJ3$2!!!1X3#k0IlrJ6@00B%!c`!!$,% +!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F- +eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!! +-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B% +e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m +!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)% +eJ6A$0B%!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B% +!c`!!$,%!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,% +!J6@"0F-eJ3$2!!!-X3#"0B%e`c@"!-m!!!ba!)%eJ6A$0B%!c`!!$,%!J6@"0F- +eJ3$2!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)% +!J3$"!!!+J3#"!)%!J3$"!!!+J3#"!)%!J3$"!!!1[`#"NmH6S!$XNi%!X`!!$Vm +!JC2(NkJ!h*1"!,X!!#1r!!'6Ni&!bd!"Nj1Y!256rJ!!32S!!%$k!!&!!256J3$ +!!!!d[`!"Nj1"3-Y!!C16XJ$hN`3!!%!!32`!!N!!32`!!N!!32`!!N!!32`!!N! +!32H6J3$&!!![[`!"Nj1"3-Y!!C16Y3$jN`%!!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$jNi%!b!!!-Vm!!C16J8$,3!'6NlJ!qT-!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32X!qT1"!-X!!$Lr!!'6Ni&!bd!"Nj1l!2Z6r3!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!N!!!2Z6J3$1!!"+[`!"Nj1"3-Y!!C16[J$lN`"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r3$lNi% +!d3!!2lm!!C16J8$,3!'6Nm!!r*-!32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m3!%!!2b6J3$6!!!q[`!"Nj1"3-Y!!C16`J$mN`"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!q`$mNi%!e3!!3lm!!C16J8$,3!' +6Nm3!rC2q!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +"3!$pNi%!e`!!@Vm!!C16J8$,3!'6NmB!rC2p!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!4!!%!!!2f +6J3$C!!"'[`!"Nj1"3-Y!!C16a`$qN`!!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$p32k6J3$D!!")[`!"Nj1"3-Y!!C16b3$pNrd +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!#3!! +!rC1"!0`!!%Lr!!'6Ni&!bd!"Nj2,!2f6q`!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!r3$pNi%!hJ!!Blm!!C16J8$,3!'6Nm` +!rT-"!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!2k6J3$I!!"-[`!"Nj1"3-Y +!!C16c3$qNri!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$ +q!2a!rJ$m32i!r%!!!2k6J3$J!!"-[`!"Nj1"3-Y!!C16cJ$qNrX!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$p!2k6J3$ +K!!"1[`!"Nj1"3-Y!!C16d!$qN`"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32X!rT1"!1-!!'br!!'6Ni&!bd!"Nj2 +4!2k6!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N! +!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!%$qNi%!j!! +!8lm!!C16J8$,3!'6Np)!rT-!32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$ +q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!!3!!rT1"!18!!&#r!!'6Ni&!bd! +"Nj26!2k6qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$m!2k6J3$Q!!"5[`!"Nj1"3-Y!!C16e!$qN`"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$l!2k6J3$R!!"b[`!"Nj1"3-Y!!C16e!!%Nj0!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!Nj1"!1F!!&Hr!!'6Ni&!bd!"Nj29!!+ +6Nd$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%!$!!#6Ni%!k!!!9,m!!C16J8$,3!'6NpB!rT2l!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$p!2k6J3$T!!"8[`!"Nj1"3-Y!!C16e`$qNrS!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32`!rT1 +"!1S!!(Dr!!'6Ni&!bd!"Nj2A!!16N`"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!"Nj1"!1S!!&Hr!!'6Ni&!bd!"Nj2B!2k6!3! +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$qNi%!k`!!@Vm!!C16J8$,3!'6NpJ!!C16r!!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32i!!C16J3$V!!"D[`!"Nj1"3-Y!!C16f3!"Nj2l!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!r3!"Nj1"!1`!!(Ur!!'6Ni&!bd!"Nj2C!!'6Nr`!!N!!32`!!N!!32`!!N! +!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N! +!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32i!!C16J3$X!!"D[`!"Nj1 +"3-Y!!C16f3!"Nj2m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!rN!"Nj1"!1`!!&br!!'6Ni&!bd! +"Nj2D!!'6Nri!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!0!!*16J3$Y!!"F[`!"Nj1"3-Y!!C1 +6fJ!"Nj2q!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!$3!#6Ni%!l3!!I,m!!C16J8$,3!'6NpS +!"T16!!"!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!4!!%#6Ni%!l3!!AEm!!C16J8$,3!'6NpX!!C16rN$q!2a!rJ$m32i!r%$ +q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$ +q!2a!rJ!#3*16J3$Z!!"E[`!"Nj1"3-Y!!C16f`!#Nj0!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32X!!C16J3$Z!!"E[`!"Nj1"3-Y!!C16f`!#Nj0!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32X +!!C16J3$Z!!"m[`!"Nj1"3-Y!!C16f`!$Nj-!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!C16J3$Z!!"F[`!"Nj1"3-Y +!!C16f`!$Nj-!!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m3!'6Ni%!lJ!!AEm!!C16J8$,3!' +6NpX!!C16r3!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!"%!!!*16J3$Z!!"G[`!"Nj1"3-Y!!C1 +6f`!"Nj2p!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!%3!!!Nj1"!1i!!(kr!!'6Ni&!bd!"Nj2 +E!!'6Nri!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!"8!!3!#6Ni%!lJ!!AEm!!C16J8$,3!'6NpX!!C16rN$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ!#3*16J3$Z!!"E[`!"Nj1"3-Y!!C16f`!#Nj0!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32X!!C16J3$Z!!"D[`!"Nj1"3-Y!!C16fJ!"Nj2k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!r!!"Nj1"!1d!!(Zr!!'6Ni&!bd!"Nj2D!!+6Nd$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$p!!'6Ni%!l3!!@lm!!C16J8$ +,3!'6NpS!!T16!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$p3!'6Ni%!l3!!@Vm!!C16J8$,3!' +6NpN!"*16!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!#3*16J3$X!!"D[`!"Nj1"3-Y!!C16f3! +%Nj-!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!*!Nj1"!1`!!(Ur!!'6Ni&!bd!"Nj2C!!@6N`" +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!0 +!!*16J3$X!!"C[`!"Nj1"3-Y!!C16f!!"Nj2q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!!J#6Ni% +!k`!!@,m!!C16J8$,3!'6NpJ!rT2p!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!*!!!$qNi%!k`!!@Em +!!C16J8$,3!'6NpF!!C16r3!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!%3!!!Nj1"!1S!!(Dr!!'6Ni& +!bd!"Nj2A!2k6"!!!3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!! +#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!! +#3!"!r!!#3!"!rT1"!1S!!&Hr!!'6Ni&!bd!"Nj2@!2k6!%$q!2a!rJ$m32i!r%$ +q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%! +"!!$qNi%!k3!!9Vm!!C16J8$,3!'6Np8!!C16q`!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!r3!"Nj1"!1J +!!&Dr!!'6Ni&!bd!"Nj28!!'6Nr`!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32i!!C16J3$R!!"a[`!"Nj1 +"3-Y!!C16e!$qNri!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!d!!3!$qNi%!j`!!8lm!!C16J8$,3!'6Np-!rT-"3%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!rT1"!1B +!!&#r!!'6Ni&!bd!"Nj25!2k6q`!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$p!2k6J3$P!!"3[`!"Nj1"3-Y!!C1 +6d3$qNr`!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!rJ$qNi%!j!!!Dlm!!C16J8$,3!'6Np!!rT2q!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!0!!%!!rT1"!1-!!%qr!!'6Ni&!bd!"Nj2 +1!2k6!%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$q!2a!!3!!rT1"!1%!!%br!!'6Ni&!bd!"Nj20!2k6r!!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32i!rT1"!1! +!!%br!!'6Ni&!bd!"Nj2-!2k6r3!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!#3!!!rT1"!0m!!'+r!!'6Ni&!bd!"Nj2,!2f +6!`"!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!&!!2f6J3$H!!"([`!"Nj1"3-Y!!C1 +6b3$pN`%!!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$pNi%!h!!!4lm!!C16J8$,3!'6NmF!rT2q!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!8!!rT1"!0S!!%1r!!'6Ni&!bd! +"Nj2'!2f6!3"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!rC1"!0N!!&Dr!!'6Ni&!bd!"Nj2%!2f6!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$p!2f6J3$ +A!!"![`!"Nj1"3-Y!!C16`J$mNrj!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$q!2a!rJ!!32b6J3$9!!!m[`!"Nj1"3-Y!!C16`!$mNrX!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32d!r*1"!0-!!$Zr!!'6Ni&!bd!"Nj1 +q!2Z6rJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!&!!2Z6J3$4!!" +&[`!"Nj1"3-Y!!C16Z`$lN`%!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N! +!32`!!N!!32`!!N!!32`!qj1"!-i!!$5r!!'6Ni&!bd!"Nj1i!2U6rN$q!2a!rJ$ +m32i!r%$q!2a!rJ$m32i!r%$q!!"!qT1"!-X!!$#r!!'6Ni&!bd!"Nj1e!2Q6r3! +!32S!!%$k!!"!qJ!!32S!!%$k!!*!!!$jNi%!b!!!+,m!!C16J8$,3!'6Nl)!pj2 +k!!"!qJ!!32S!!%$k!!"!r!$hNi%!a3!!*Vm!!C16J8$,3!'6Nkd!p*-!32`!!N! +!32`!!N!!32d!p*1"!-!!!"5r!!'6Ni&!bd!"Nj1S!0b6J3#l!!!8[`!"Nj1"3-Y +!!C16S!$XNi%!X`!!%Vm!!C16J8$,3!'6Ni%!J3#p!!!5[`!"Nj1"3-Y!!C16J3# +"!,d!!"+r!!'6Ni&!bd!"Nj1"!)%![3!!%Vm!!C16J8$,3!'6Ni%!J3#p!!!5[`! +"Nj1"3-Y!!C16J3#"!,d!!"+r!!'6Ni&!bd!"Nj1"!)%![3!!%Vm!!C16J8$,3!' +6Ni%!J3#p!!!5[`!"Nj1"3-Y!!C16J3#"!,d!!"+r!!'6Ni&!bd!"Nj1"!)%![3! +!%Vm!!C16J8$,3!'6Ni%!J3#p!!!5[`!"Nj1"3-Y!!C16J3#"!,d!!"#r!)'6aj2 +C!2f6J3#"!1N!!"#r!)'6aj2D!2H6J3#"!1i!!"1"!)%!i!$pN`&!!2D6J3#"!2- +!!"H"!)%!i3$pN`%!!2a!!!$eNi%!J3$j!!!BJ3#"!1-!rC2l!!"!qJ!!32@6J3# +"!2i!!"L"!)%!j3$mNrS!!%$k!!"!q`$eNi%!K!!!*S%!J3$Q!2f6!N!!32`!!N! +!32`!!N!!32`!"%!!3!!!pC1"!)N!!#1"!)%!k!$pN`&!32i!r%$q!2a!rJ$m32i +!r%$q!2D6J3#1!!!QJ3#"!1N!rC-!32S!!%$k!!"!qJ!!32S!!%$k!!*!!!$eNi% +!P!!!+)%!J3$V!2f6!J!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ$eNi%!Q3!!1S% +!J3$X!2f6"!!!3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r3$dNi%!S!!!-)%!J3$Z!2f6r8$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ!!32+6J3#R!!!dJ3#"!1m!rC-#!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$m!2'6J3#[!!!iJ3#"!2%!rC2p!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!r3$aNi%!YJ!!8S%!J3$b!2f6r3!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!rJ$aNi%![J!!3i%!J3$d!2f6!!$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ!"3%$`Ni%!aJ!!4)%!J3$f!2b6r3! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!mC1"!-d!!%L"!)%!p`$pNrX!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ$dNi%!dJ!!EB%!J3$j!2f6!3" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!$lNi% +!dJ!!8)%!J3$k!2f6rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m3!!!rC1"!0%!!&#"!)%!r!$pNrS +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!N!!!2f6J3$3!!"3J3#"!2d!rC-!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$pNi%!cJ!!FS%!J3!"!!$pN`-!3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!!32f6J3$0!!"4J3#"!!!!rC-"3%$q!2a!rJ$ +m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$q!2e!rC1"!-X!!%q"!))!rC-"!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!rC1"!-S +!!%k"!)3!r*-#!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!q`$pNi%!b!!!ES%!K3$pNri!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32d!rC1"!-F +!!%q"!)F!rC2m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!!8"!rC1"!-8!!%k"!)J!rC2q!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!q`$pNi%!a!!!6S%!LJ$pNr`!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$p!2f6J3$ +#!!"YJ3#,!2f6r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!! +#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!! +#3!"!r!!$3!"!!2b6J3$"!!"2J3#0!2f6!3!!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2f6J3# +r!!"1J3#1!2f6r!!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32i!rC1"!,d!!%k"!*!!!2f6qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!#3!!!rC1"!,`!!'k"!*%!rC-"!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!&!!2f6J3#k!!"3J3#6!2f6!%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!!!$pNi%!Z3!!6B%!P3$mNrS!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!8!!rC1 +"!,F!!%q"!*B!rC-"!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!rC1"!,B!!'k"!*J!rC-%!!" +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!* +!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!2f +6J3#d!!"1J3#C!2f6rN$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2e!rC1"!,-!!%k"!*X!rC-#!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ$pNi%!X3!!6S%!R!$pNri!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$l!2f +6J3#`!!"ZJ3#H!2f6r3!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!rJ$pNi%!VJ!!6i%!R`$pNra!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ!"3%$ +pNi%!V3!!6S%!S3$pNrd!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$m!2f6J3#V!!"1J3#M!2b6r!! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32d!rC1"!+S!!'q"!+3!rC-!32`!!N!!32`!!N!!32`!!N! +!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N! +!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!d!!3!$pNi%!U!!!6S%!TJ$pNri +!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2f6J3#R!!"1J3#R!2f6q`!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32i +!rC1"!+8!!&#"!+N!rC-!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!" +!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!N!!!2f6J3#N!!"[J3#U!2f +6!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32`!!N!!32` +!!8!!rC1"!+)!!&'"!+`!rC-"3%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!!!$pNi%!S3!!6i% +!V3$pN`"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S +!!%$k!!"!qJ!!32S!!%$k!!"!qJ!"3!$pNi%!R`!!8)%!V`$pN`)!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!rC1"!*i!!'k"!,%!r*-%!!"!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!2f6J3#F!!"1J3#b!2f6r8$q!2a!rJ$ +m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$ +m32i!r%$q!2e!rC1"!*X!!%k"!,3!rC2q!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ$pNi%!Q3! +!6S%!Y3$pNrd!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$m!2b6J3#B!!"ZJ3#h!2f6r!!#3!"!r!! +#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!! +#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!rJ$pNi%!PJ! +!8)%!Z!$pN`!!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$ +q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!!"!rC1"!*3!!%k"!,S!rC2m!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!r!$pNi%!N`!!6S%!Z`$pNrX!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$q!2f6J3# +4!!"`J3#p!2f6!3"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!"!r!!#3!" +!r!!#3!"!r!!$3!"!!2f6J3#3!!!!6i%![J$pNri!r%$q!2a!rJ$m32i!r%$q!2a +!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%!"!!$ +pNi%!MJ!!6S%!`!$pNrS!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ! +!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$q!2f6J3#0!!"2J3$#!2b6!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!&!!2f6J3#,!!"`J3$$!2f6!`"!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$ +m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!*!!%$m!!&!!2f6J3#+!!"1J3$&!2f +6rN$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i!r%$q!2a!rJ$m32i +!r%$q!2a!rJ$m32i!r%$q!2a!rC1"!)J!!&#"!-B!rC-"!%$k!!"!qJ!!32S!!%$ +k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$k!!"!qJ!!32S!!%$ +k!!&!!2f6J3#(!!!-J3$)!)'6pT1"!)8!!!b"!-J!JC2hNi%!K!!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)%!`3!!#S%!J3#"!)% +!`3!!!+!!J`$rij%!!!%!!!!"(!!!!"`!!!"'!3!+@BqU!bPI!!C)H!-",b`!"Nk +Y!F)[,!!'F!-[!#!,+R"KD@jd-5jLGc!#!!!!3PG`G%*ADh-!N!T#9h"d3PGVF`# +3'-qde8)!N!B"BPm!&PQ2-#i!%NM!,`#S2b"X!!BJ8#&I!"SSE[rm6Pj1G8j@!!! +[$#KZ!!JJE!!')&!aE!!@!#"`%,"X!"CZ$L"X!!BJ8$&m!"!!(Q!+)'`!"L"33QJ +!(M!X!"C63'FB8d"R&&9!Ca"C3'F-88"R)J4!!""R0Q"-)'`!"L"3-A`!!3#3"!J +!6J!#!G`#GJ!!!!`,3Q9KCfaP9fpbDh-!!!%!!!!"(!!!!"`!!!"'!$Zja"XZ!!! +!(!"'!!&h8'pc!!!!%P088L!!!!!H!qRrr`#3#,rdrrm!!!!-!*!%-U%!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/Canvas_2.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/Canvas_2.hqx new file mode 100644 index 000000000..9a534cd21 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/Canvas_2.hqx @@ -0,0 +1,407 @@ +(This file must be converted with BinHex 4.0) +:"@CTE'8a!'4bGc*%383b!3!!!%p"!!!"VKBU!!!ChJ!!4E`!!!'N!!!!#J!!!() +!!!!k!!!!-J!!!#)!!!!@!!!!3J!!!"S!!!##!!!!2!"N!!%!!%@m!%X!!%!#PJ# +3$J%"!!%!N!3J!%!!B!#!!-!"3!'!!F!#3!+!!*!62J!!!!%!!3!3!!!!!3!$2rb +!!*!)"`!$!!F!#`!1!!$rq!!!!(J!N!i@&3#3"Xc-rj!%!!!!![rr!%N!!2rr!!! +!&!!%!!3!6!"-!!%!#!"+!%S!)J!#!!%!(3!#rrm!'J!Q!!i!!2rr#!!!!2rr!!) +!"!!!!!S!N!6m'2`B!*$r!*$r!*$$!3#3")!!!!#!!!!!J!!!!)!!N!B"!!!!!`# +3'9SC6!!L!!%!N!i)6'&jCA)J)c%!!LJY!%0[F(NJE`!$!!!!$!#3"[rq!*!r#2r +1!"MrjJ#3#4S!S!"[!1-#e!%h!`!"5!!"!"!!!!!$!!%!!!",!!!!!3!!!!%!!!% +L!%IbcJ"(llS!4qq+!3!!4r,1!*!(!3!"!"3!$!!$!!)!!!"D!!%!!!!#!!!!!`! +-!*!&!J!8!!`!!`!#!!!!@J!"!!!!!J!!!!-!$!#3"3-!&!!-!!-!!J!!!&S!!3! +!!!)!!!!$!!`!N!3"!!"D!!`!!`!#!!!!@J!"!!!!!J!!!!-!$!#3"!%"!"3!$!! +$!!)!!!"D!!%!!!!#!!!!!`!-!*!%!3)!&!!-!!-!!J!!!&S!!3!!!!)!!!!$!!` +!N!N"!"!!!!!$!!%!!!")!!!!!3!!!!%!!!%L!%IbcJ"(llS!4qq+!3!!4r,1!!) +!#J#3"@3!!!!"!!!!!3!!!!%!!!0`G#lbcJ"(liS!-HN8rrm!4r,1!!-!#J#3"3) +!!!!F@,%!!3!!!!%!!!0ME5lbcJ"(liS!-HN8rrm!4r,1!!3!$!#3"3)!!!!-!!! +!!3!!!!%!!!4`D@0KcJ"(liS!-HN8rrm!4r,1!!%!#J!!!!-!!3!!!%J!!!!"!!! +!!3!!!fPZ,[,1!%I[LJ!ak46rr`"(mXi!!J!+!*!&C!!!!!%!!!"N!!!!!3!!!R" +d-I,1!%I[LJ!aCK$rr`"(mXi$-5mi3)"L!!!!*Z4!J'5D!!)3q!%L!%IbcJ"(llS +!4qq+!3!!4r,1!*!Ae!!!!)S!!!"!!!!!6!#32eS!N2m!!!%!!!!"!!%!#J!!!!S +!!#F3!!%!!J!"!!!!!3#3"@3!!!"N!!!!C!!!!!%!!!!"!!!!!J!!!!%!!!!"!!! +!!3!!!$)!#J!"!*!&!`!8!!%!!3!"!!%!N"m"!!%!!e%)!$J!%J!"!!!#r3!"!3( +m!!&&a2i!#LB!!!8e!!%!!J!Kq3!"raAm!!CFc-`!!Irrj!!(53%*!,J"l'2p!!) +)!3(p!!&&X[i!!!Vm!!!"r`!i!3!#q3!"raAl!!(-c2hrj3!)U&"J'UK3B"CMr3! +##!%"q!!!#[`!"!%!!3!"q3!"r`,l!2[rp`!rlJ!15J!i!&B!aJ-#!`!!#!%8r!! +!#[i!!Li!![i!"!%!$!!"q3!"r`,l!2[rj!!1EJ!i!(!!D`-%!J!!#!%83[`!!$M +q!!!Zr!!%!3!-!!,j!!(r![X!qrrN!!HM!$B!X`"S![d!!3%"q`!!C[i!#Q3!'J! +"!!%!$3!#q3!"r`,p!$)"!!$lrq3!"pS!1J$U!'`#r3!"!3(l!!$+rJ!+C!!D!!% +!!3!0!!,j!!(r![X!qrrR!$lq!!lm!$N")!#""33#!!!)!46f!!JC!"N!!3!0!!, +j!!(r![X!qrrP!!m"A3![!AF!LJB%!J!!#!%8mJ!!!6cq!!!#q3!"r`,l!2[rj3! +)!6J!3J&)!(3#r3!"!3(m!!%",[i!#Q3!'J!"!!%!$3!#q3!"r`,l!2[rq3!cl!! +1cJ$I!3X"K`3%!J!!#!%8mJ!!!Ii!!!(j!!(r![X!qrrP!!J"PJ"$!DB!G3,p!!! +"5!!"r!!"!C,q!!CN!"S!!3!"rJ!!!rN!!Im#q`$lrq3!$NS!1!"`!-CM"!-!!!J +"!Id!!3(frJ!!$[`!"!%!$3!"q3!"r`,r!$,p!2[rj!!15J!f!8J!aQ-%!`!!#!% +"r3!"!J6q!!!8r!!!!Ii!!!(j!!(r![X!qrrT!&Am!!G*!3N!Z!(X"2d!!3N"r!! +&!q`!!!d#r!!!!Ii!!!6q!!!5rJ!#%`%#q`$lr`%"$[)!"6H!!!"aJ2`!$`%B!2` +"93%B"KXE!!!)!46h!!(rT[m!@!%!!Ii!!!Aj!!(r![X!!Fc-rIrp!!D!!)!!J!# +!m!!9!6!"4!&L!FS*"!4-6!J"S`!"!!!4([i!!&Mm!!!"rJ!!"[S!!K%"![eQ"c- +cQCNc-rrrr3!""Q42"3!N"Q3!*2%!$`%`!83"BJ(+1!3%6%`)!46p!!%4G[i!!+l +m!!!"rJ!!#2N!!Im3q`!"c-cprrd!"`CN!#3'C!!Nm!!(5J%+!,F"k`,q!%i#!!% +"r!!,!N!!!!'X!"S!!3!"rJ!!"2N!#`%#!%S!!!%+!!$rrq)!"dN"#3#i!H`*r3! +"#3(m!!%3l[i!!M!!'[i!!!(q!!!%q3!"!3*"$3"+!!!"#J!!rrm!!!%1j`!2!8B +!S!&e!1!*"!)!!!J"([d!!3)BrJ!!+2`!!!(q!!!(q3!"r`,l!!(-c2hrk`"EqJ! +($`!X!$d!A`Ap!!)*!46p!!X5*!!!!A!!%!!3!!(q!!!)q3!"r`IpCJFc-mc-!!$ +-c2d!"rQ0"S,jM3D#m!!('!%3!%3"3!6p!!)*!46p!!86P!!!"#$r!&3$!!$rr[i +!!!Rj!![r![rr!!!c-fCQ-c2l!!IjGIrpqAArrI!!"aS!S!"[!1-#r3!"!3(m!!% +e6[i!"YB!'J!"!!(q!!!4q3!"raAl!!(-c2hrr3"#k!!163#3!!$q!9J%!!!"!3N +"&2d!"5+5!!!4q[`!!!(q!!!-q3!"!3,l!2[rr3!'J!#!!)!!J1m!#"3"H3!r!D8 +%!&6q!!)*!46p!!8AY!!!#4,p!!(rrIi!!!Vj!!%"![X!!Fc-rIrp!!IrqJC$rrS +'3r!!"iF!3J#H!'S%r3!##3%8r3!&)-B!!!(-r3!"rrlq!!!,q3"1!3%#q`!"c-c +prrd!"rQV!"MjU`!Bm!!0Q`$r!*`"!!-"!8a-#!6m!!%dM2i!!Li!!ri!!!(q!!! +0q3!"!3,l!2[rr3!'J!#!!)!!J2J!5rJ!$CX!r`#F!3!$!3&-6!J%r!!"0,Vq!!) +Z!!2q!!!"rJ!!$[N!!3%#q`$lrrd!"S!!J!#!!)$[!!l#!Cm!l`(B"!%"6%`)!3( +h!%Rm!!!"rJ!!$rN!!3%#q`$lrrd!"S!!J!#!!)$`!!J")`'r!6-"m3,p!!!"q`! +"01Mq!!*Q!"Vq!!!"rJ!!%2N!!3%#q`$lrrm!1HB!$KB"EJ!B!H!$"!4-6!J"&2d +!!6BNrJ!#,J!#rJ!!!Ii!!",j!!(r![X!qrrP!!F"JJ&E!B`"ZPB(!`%"!!!)!46 +p!!%fh2i!"Li!!J!"!!(q!!!@q3!"r`,l!2[rr3!'3!#!!)!!J1m!$K3"D3!l!J) +$"!4-6!J"&2d!!6C5rJ!',J!#!!%!!Ii!!"2l!%d$!!$r![X!qrrp!!E!!-!!`!" +!l`!1C`("!*d#,!-%"%a-#!%8r3!"0Ulq!!!ZrJ!#!`!"rJ!!&IN!!Im#q`$lrrd +!"S!!3!#!!-$k!%rf!!ij!DS!5J)X!`3%6%`)!46p!!%fJ2i!"#i!!J!(r!!!&2N +!!Im#q`$lrrX!!-$q!!"!m!!9!Md!0`*k!(`*"!4-6!J"&!!"!!!i([m!BJ%!-2` +!"!%!,3!GrJ!!2ri!!Lcr&IX!!Fc-rIm,!!d!!+'HSrdGPi8Nr!!'(Mhm!#'+1rd +!$`'9!@)"R`("!`%"!!!)!46p!!%h#[i!!#lq!!)"!!(q!!!Aq3!"r`,l!2[r62d +!"S!!J!#!!)$`!!m"T3&U!Dm"b3-"!3!!#!%8r3!"0cMq!!!ZrJ!#!3!"rJ!!'2N +!!Im#q`$lrrd!"S!!J!#!!)$`!!8"V3&a!FGC#3(4!`%"!!!)!46p!!%hC[i!!#l +q!!)"!!(q!!!Cq3!"r`,l!2[rr3!'3!#!!-!!J2!!$`&b!Fm"M!)[!`%"!!!)!46 +p!!%hP2i!!#lq!!)"!!(q!!!Dr3"1r3!"r`,l!2[rr3!'3!#!!-!!J2!!$`'%!GJ +"RJ)i!`%"!!!)!46p!!%h`[i!!#lq!!)"!!(q!!!Eq3!"r`,l!2[rr3!'3!#!!-! +!J2`!8I8!$`'I!H-"U3*#!`%"!!!)!46p!!%hm2i!!#lq!!)"!!(q!!!Fq3!"r`, +l!2[rr3!'J!#!!)!!J2!!$`)Y!*`#A3$,!`3%6%`)!46p!!%iQ',q!!)Z!!,q!!3 +"!#d!([i!!%(p!!(r![X!qrm,!!d!!!hcdh'd&4&'r!!''&-4!"FHk[d!$`)p!$F +#HJ"m1!3%6%`)!46p!!%i6[i!!%Vm!!!"rJ!!([N!!Im9q`!"c-crre%"rrrp!!H +KRU2p(CH&*2%!%!)Y!$F#l!%BB`3%6%`)!3%JrJ!"1@Eq!!!Br!!!!Ii!!"hj!!( +r&IX!!Fc-rIrp!!F0mk2p9YldI[%!!`*X!(jY#`+5!,F*"!4-6!J"&2d!!6SQrJ! +!-2`!"!%!,3!HrJ!!3[d!!3%#q`!"c-cpr`X!$3!!C'rr3'A6[1cm!!B6!,)!(&l +@r3!2!PS!aJ+#!2m+"!4-6!J"&2d!!6T@rJ!+Q!!C!"N!!3!Y!"lr!'d"!%2p!!% +"![X!!Fc-rIm,!!d!!!1TT)LA64Q-r!!'&&`5!"`kJ[d!&3+T!)N#`!#c#33%6%` +)!43!!3!!1alq!!T`!,3!!3!"!#d!([i!!%6q!!*&!3,l!!(-c2hr#`!0!!#0cT) +ZMHai#rm!E2i!"J`Nl!!@SYEp!"8#c3"+!Z`!UJN%"%a-#!%8!!%!!$M'rJ!!D2` +!"!%!,3!HrJ!!4[i!!M,r&IX!!Fc-rIm,!!d!!(FEX#K@hXI+r!!'%!PP!#jih[d +!$`,0!%S#l!#U1!3%6%`)!46p!&J"2DEq!!$1r!!!!Ii!!#2j!!(r&IX!!Fc-rIr +p!!Gh'l!S9Yl(b[%!$`+5!0!#a3%B#33%6%`)!46p!!%j,[i!!$Mm!!3"!#d!([i +!!%Mp!!(r&IX!!Fc-AIhr#`!0!!"2fKREJ6rdI[`!"KTL3!!PaYIp!!J#$3%X!N- +"N36p!!%*!I`!"6mD!!!#p2`!!!(q!!!HrJ!!22i!!Md"![X!!Fc-rIm"!"Eb!!! +ErJ!"-S$m!!%#IPm'!9N#MJ('"2d!!3N"r!!"3UMq!!$Jr!!!!Ii!!"rq!!!krJ! +#13%#q`!"c-cprri!!!2d!!!)rJ!!+IX!#!+V!9d#Z`'l![d!!3%"r!!"3lMq!!C +X!"S!!3!"rJ!!)%Rj!![r&3+V!!!"A3!!rrrM!!J#U!&D!Vi"d3Rp!!%*!I`!!83 +NrJ!!-2`!!!(q!!!Jq3!"!3,l!!(-c2hrrJ!)!GpFPrSPa-F!@[`!!!Vq!!!aq`! +)!UX"A3+m!Fd%r3!"#3(m!!&%92i!!1lm!!!"rJ!!)2i!!$Eq!!)h!3,l!!(-c2h +rrJ!!!I3!"!L!!!![q`!)!R`"8`+3!!(,#Id!!3N"rJ"J!`!!3iMq!!!`r!!!!Ii +!!"rj!!%"![X!!Fc-rIrq!!J$!!#JD3!!B(,m!!!+rJ!!+rX!#!*q!9N#MJ'V![d +!!3%"r!!"3Mlq!!CU!"S!!3!"rJ!!(rN!"rm9!Ri!!!&C*J-!!2rrf`!!C2d!!3% +"m`!#!3!"rJ!!)IN!!Im9q`!"c-cprq8!9`J#)!%X!M!"N3,p!!%"!I`!!6kXrJ! +'EJ!D!!%!!Ii!!"lj!![r&3)J!!!",!!!rrrq!!!@j`!)!J`"+`*$!C%*r3!"#3( +m!!&#$[i!!M!!'[i!!!(r!%S"!"lj!!X""!)J!!!",!!!rrrq!!S@!!"Fp@$US`Z +I&[`!!LD9S2%!!'6p!!))!3(f!!!lrJ!!!Ii!!!,j!!(r&IX!!Fc-rIrh!%M[!"8 +#+`""!Qd!LJN%"%a-#!%8!!%!!$PqrJ!!-2`!!!(q!!!GqJ!%32m9!L[q!!4"!!$ +rrq-!$`)V!%%#E3#+1!3%6%`)!44-r3!"1Dlq!!"+r!!!!Ii!!"lj!!(r&IX!!Fc +-rIrP!!m#1!#R!Pd!h`-%"%a-#!%8r3!"1IMq!!)Z!!,q!!!"rJ!!([N!!rm#!MM +r!$-&!+F!!2rri`!(!R!!K!+,!,Mq"!4-6!J"&2)!!!(q!!!Hq3!$ra8#F2i!")3 +!!2rrj3"3%3!!!Q`!c!+1!3-&"!4-6!J"&2B!""N!'3!"rJ!!([N!!rm9!Qcq!!6 +-!!$rrq-!$`+X!)%#Z`#X"`3%6%`)!46p!!%kl[i!"M!!Y2qQ!!&+rJ!!([N!!rm +9!Ucq!!5"!!$rrq-!$`+T!)N#`!#c1!3%6%`)!46p!!%lM[i!!0lm!!!"rJ!!([N +!!Im9q`!"c-cprrd!!ih1NLj,!ihXH![a!"8#ZJ!k!ZN!P3N%"%a-#!%8!!%!!$a +XrJ!!D2`!!!(q!!!HqJ!%4rm9!VVq!!3k!!$rrq-!$3+k!$S#k3#91!3%6%`)5`% +"&2d!!6c8rJ!!d[`!!!(q!!!Mq3!"raAl!!(-c2hrj3!2!U8!b!,A!4!*"!4-6!J +"&2d!!6jdrJ!!12`!!!(q!!!Hq3!$ra8#T6Vq!!6)!!$rrq-!#!,8!6F#j!'b![d +!!3%"r!!"48,q!!C`!"S!!3!"rJ!!)IN!!Im9q`!"c-cprqN!9I`!!J%!!I-!%`K +-BAPPFL!M-`!#+#d!3fp`H5"[rJ!%&J!"!!(c!"-)6'&jCA)J)c3!!LJY!%0[F(N +JEri!""B!!3!"m`!0#%aKH@9b)#-e!!)S,3"J"80[F(NJEri!""B!!3!"m`!6#%a +KH@9b)#-f!!)S,3"$Eh"j)'rq!!`@!!%!!3!!&'`!@KLXq`!6#%aKH@9b)#-h!!) +S,3"$Eh"j)'rq!!3@!!%!!I-!"`K-BAPPFL!M&`Xi!!)S,3"$Eh"j)'rq!!3@!!% +!!Im!C"%!!!9&"H8'+3G,!&B!1!"+!-Ei!!J"!"3!$!!$!!,q!!*D!!(q!!!#rJ! +#!`!-r!!'EJ!i!(!!DrJ!#!%!&!!-!!-!![i!!PS!!Ii!!!,q!!)$!!cm!!!$rJ! +!$2X!!Irqr3"MrJ!!#2S!!"cq!!!)rJ!F%Q&LBf4PCQF0!!%!!3"F[`3!A,jJ!&S +BV!"F[[6m!!S*rrm!!3!3!!`!!ri!!!ck!!J3!!`!%!!-!!2q!!!-q`!"rrlk!!! +)qJ!!(2i!!!Mq!!!5D"YKBQ0NC@CR$3!"!!%!A,m%!&bqB!"D'+`!A,ldr!!+#Ir +r!!%!%!!-!!2q!!!-qJ!)%!!-!"!!$!!$rJ!!$2X!!IrqqJ!!#2S!!"cq!!!)rJ! +8%Q&LBf4PCQF0!!%!!3"F[`3!A,jJCJF!@KLX!&bqp2`!#JRrr`!"!"!!$!!$rJ! +!$2S!#"!!$!!3!!`!!ri!!!cl!!(rr[S!!!Mk!!!FrJ!!#2i!("*KBQ0NC@CR$3! +"!!%!A,m%!&bqB!"D'+`!A,ldr!!'#Irr!!%!%'i$!!`!!ri!!!ck!")3!!`!%!! +-!!)!!`!%!5S!A!!`rJ!+"3!-!!8!"J!(!!Rq!!!BrJ!!&2S!!J3"D[i!"+!!!!& +'rJ!%Z`!!!@lq!!6J!!!"GIi!!,Mq!!!$rJ!!$2X!!IrqrJ!!!Ii!!&6r!(N"!&V +q!!"-rJ!!)2i!D-C9EL"`CA4TG#"dCAKdC5""FQPKE%*[EfYYB@i0-6"`G$-`F(4 +LEfaNDA4KE'PM$A9ZC(*XD@jP$@j[FQeKE!eMC@jdCA)0Eh9dE'PZC3ecD'&NEhF +!$3!,!&br"!"F[Q!!@KLX!&bqp2m!F2i!"!8!!3!)rJ!b$`!#!"3!!`!F!!3!)!! +&!#3!"J!S!!F!,`!)!$J!"!"'!!N!6J!+!&Arr`!#!"!!$!!$rJ!!$2S!"J%!%!! +-!!2q!!i-rrm!!$-c!!%!$J!,"p(q!!!-qJ!'!3!0!!S!$[i!!!aFqJ!'!J!,!!J +!$[i!!!Vk!!B"!#%!'!!1rJ!!([S!#J%!)3!B!!i"!!!HqJ!+!3!K!"J!$J)!!"l +k!!S"!!X!#!!1"J!!#[S!#J%!$3!*!!i)!!!+qJ!%!3!1!!NV"3!1%!!!#[S!(K! +!$!!K!"J!#`!)!!X!#!!,!!J!$3!*!!i!#3!1!!Qe!$I5!!%#%2i!#B)3"!!!3!! +3"!,b!!%#%2i!$)!3"!!!3!!S!!,q!!2e!!`#%X"iFFBi$Ka%iF!SB348FN%!!I8 +!&3)6)%5)JK!%)N4#)#KNLN%mH6Yh20cj!"8#%L"%L))3"#)S3L"%4!Tq3S8KQ84 +Nq3!9!K)J42L#%!3q%%2JI%4k38+&34%F42N!$!)5)%5!JK!%)#K#!%4'#%5+38+ +&S4&N42N!&3)5)%5)JK!%)N4#))*%QN&#K4%44%6j!"8"iL"iF')-!aa%-F##4'V +q2(ZlZrlZpJ!!313!!%$i!!+*!$M)!!$JrJ!$!i!!F2`!!-$k!!-$m!"qrJ!#"!I +JrJ!*(i!$m!!'!!!(`2S!#3ii!-1!!!!-"q$r!'d,!"q!!r!i"!!!!m$Jq`!*'!` +$JF!!!!`$i2i!#Jq!!I"i"!!!!i(Jq`!*1!i$!-!!!!`$i2i!#Jq!!I"i$!!!!i( +Jq`!*1!i(!1!!!!`$i2i!#Jq!!I"`(!!!!i(!q`!,1!i(!1!!!$`$li!2DJVJ$i$ +pm!!i!!!$J2S!&cJF$J"`im$r`rrJ2rJ2JIr`-2q$j`1!`2S!&MJ1!(IXF"`$rq" +rr!q$rr(`1!FI!iI!q`!A!q!1!((`1"`$mI$mIJq(ir$`1"`2"`2!qJ!+2!i!F1! +i(!2Kq2KY#ci2Mm(`i(JF$JF$J2S!&Ji1!($J("`$i2R`(`q2JI$JF$J1"`1!qJ! +@"`i!F1!F(!2JqI!I$iq"m1"`1!i(!i$k!"B($J"`i"`F!q$jm"m2Mi(`i("`$JF +$J2i!$KK`!M!($J"`i"`F!q$jm(B,(`q2JI$JF(!H$`1!rJ!C#)J#F!F'!'$J("` +$i2R`(`q2JI(!i(!F$JIp!"N)LXG`"`F!i1!F(!2Kq2Jq$ir"mF$JF"`1"rd!'3L +,)R!'!`$!i$JF!r(`r(i2Kq2a`1"`2!i(r3!1#)SL-!i$JF$`1"`$rq"r@`[m$i2 +rmFMK-(a1*b$q!"S)LL)F'!($!2K`(L2ri$ri(m(rqG$L1*k14d$q!"SFFm1(i!" +q!1I!$m2IJ!rJ(m$pq1"m$`m(Ji$p!!!#q`!!i1X!!!,l!!$Jq`!6kJ!!i13!!1$ +N!!$Jj3!"!I$l!!IV!!%(r+%!!SN!!SN!$mF!!(cP!!%"MZ8!!J-(!"6Q!!%("q8 +!!3i(j3!!$Z3!!"cr!",Q!!!Fj!!!(13!!"cN!!)F!J!4jJ!"$J6P!!%('18!!32 +JiJ!#L3!#L3!6b!!#!`C!jJ!"!3,R!!3$,jpkrL8!(1N!"3%NSL45*1N!"3)T)L5 +NH1N!"3***N5N31N!"!2TQdEQ$!!ib`!!!rhr!2c'!"IM!!!Jj!!!)1J!"#acPXm +Jk!!$0)SE84`!)1J!"#5+%NmJk!!%*)S585$S!!3NFK*I)13!"BX!!33!&H8!!!6 +Q!!31BXjMJ1J!!a+64*,M!'6X!!B&!%N!!!%*rJ!%53!!!Hcq!!5i!!!"l2i!",J +!!!%*rJ!%53!!!3Rq!!!+r!!b#J&J"Q3"9!!N!@!'C!&8!#3"23CN!83!*!%`"Q3 +"9`!N!6S'C!&X!#3"@JCN!AS!*!&LHAF'C!'R!#3"@`CN!FS!*!&%"Q3"[!!N!6! +'C!'N!#3!VJ%Z!8B"AJ($!9i"8J&G!9)"@`&4!9J"6`&6!8d"6!&+!8B"4`&!!8B +"1`&(!6F"5!%d!8X"-J&2!6%"8`%a!9F"-3&E!6-"A`%e!@-"13&R!6d"D`&#!@j +i@J&)!A%"6J&d!9-"H3&A!Am"@J''!9`"MJ&G!CF"AJ'J!9i"U!&G!Dm"A!'f!9X +"[!&B!F!"93($!9)"``&0!F%"5!'p!8-"Z3%p!E)"0J'V!5i"SJ!%!%%!pi$p!!) +*KM(q!")#!!"hq'!!!"!"*!-*J!!!&!BqH3QpmL!!!S!-%l1FrJ"SJX'BMRB!!"# +f8k+Fr%!!!#k`EmI[!!!#@#3kBT`!!!E"i,Tm3b!!'6EmbBr"J!"&@rici9S!!#C +crf(&CJ!!"+2reaCR)!#MVrrNbXV!!+X[rqL+)J!!0-Irm"L%`!!(#rri!HZ!!#Y +crrpc"IqNB!"(6rlr"23!!,Ylr[m%r8!!bQ2qr`6m!!!H)Ilr"2i!!,ThrIm$J!" +0jrhr!m!!hA$pr`6!!%pSIrlr!q!!U[Epr`2J!+S9rIm%i!"Q6Vrqr`2J!'bbrIm +%i!"H4)rqr`6J!(iJ"rlr"H!!Cj'Mrf8kE!rJ!!lQ#rj3Rq!!-PJ0ri%2i!!++5h +ri$rJ!#JB#(rq(q!!L@"X2rrri!"!0!!2rrrJ!!`2!!rrrq$q!!3%)rrri2d!%`( +rrq!!!)!!!2rri!!#!)!!2rrJq!!!`2B!!-$k!$Mm!!$!pJ!!`2F!!$$f!!!`q!! +#-!$!q!!#-!$!q3!%$!!!!`2k!!3-!!!$!rJ!!32!p`!"!m$k!&X&!!2!!!``qJ! +%!m!!$$$j!!%``2F!!6$!q`!'-!!`!!!-$2`!"M!!-!!!$!cl!!3m!!!`$2S!"$` +!!$!-r!!)`!`!$!$`!`!$rJ!)`!`!$!$`!`!$rJ!!!rm!E2i!![!!$2i!!!2m!!, +`!!cq!!F2!!$!m!!!`rd!"`m!!-$`!!$$rJ!!$2l!"-`!`$$!rJ!!$2l!"-`!`$$ +!r3!'!`!m$!!`-2`!"J-!2!`!-$$l!!Bc!c-`-!!`r!!'-`-c-$!!-2d!!J-`!%i +"$!2k!!3$-!!-!rS!"M!$2!`!!-$m!!B`!c`-!!$!qJ!#$--$q!!#$--$qJ!$$-2 +!`2N!!`c$`-$k!!-2!-$!q3!$$`$!`2N!!`-!-!0@q3!$!`!`!rB!!X2-`2J!!X2 +-`2X!!J--22X!"3-!!!--22X!!!2q!!-$$!!-r!!'!`!!!``!$2`!!`-!!-$q!!! +`r3!$`!!!`2i!!$$p!!A!!-!!!!0F!3$!rJ!)-!!!`!!!!`$!rJ!%-!!!`!cm!!% +2`2i-!F!-r!!"$m$q$2N!!m--!$$j!!2$$!!`qJ!%!`-!--$k!!3$!`!``2`!"J- +!2!`c!!2m!!B$!$`--`!$r3"GrJ!$!c-c-2N!!`-c-c$m!!F`!`!!``!!`2d!"c! +$!!$$!!$!q!!#$!m-q!!#$!m-r!!'!`!---$!-2`!"J-!$$$!`$$p!!B-$!!!-`- +-r!!,$!`!!$-$$!!!`!!!0`!$rJ!)c-!!-!$!!!!$rJ!$c-!!-2X!!X!$!rl!q`! +#`!-$rX$h!!$!pJ!!`2S!!!2f!!!$i!!TrJ!!$2B!!!cj!!$!pJ!!`2-!!-$f!!$ +!p`!"!i$a!!%$J2%!!31!q3!Lp`!!12!!!$M`!!!im3!!F2!!!($`!!"`q!!!A2X +!!1$q!$Ml!!%)q2X!!1$i!!%2rrX!!1$h!!!-qJ!#!F!FmJ!#!F!FmJ!#!F!Fq`! +""R6l!!!Fq!!"#PAp!$m#!!!Fp`!!!IX!!"ch!!")qJ!"$JIa!!%1"rS!!3h`qJ! +"$JIj!!!"q`!%!i!!!i$m!!%2rrX!"!1!!!1!r!"0q3!%!i!!!i$h!!3$J$J!$[J +!!!,q!!3$J$J!$[N!!3rrrJ!%!i!i!!li!!!#rJ!"(($q!!!(p3!"(($q!!!(q3! +!!Ii!!4a`rJ!""`"#q`!"$GMm!!3((!!((23!"!FF!!FFqJ!!%2`!"!FF!!FFqJ! +!![i!!Z!!"rB!!,Aq!!,J!!Ih!!%")ri!!Z!!"r%!43-1!!1!q!!!A2d!!`i!!i$ +c!!-1!!1!q!!!#[X!!q!!!1$l!!%0p2X!!q!!!1$k!!!#q`!$i!!!i2X!"J*k!!! +r!($f!"Vp!!)r!($b!!)r!($[!!!rm!!!2r!!!$rC!$6l!!!2l3!!F2i!!$Md!!" +`rJ!!123!!($q!!!ipJ!'r`!"`!1!123!"!(!!i!ip!!#!F!$-3'!12-!!MJF$[B +!!!rq!!)i(!lb!!)i(!lf!!B2r`!!2`!1mJ!#2`!1mJ!#2`!1pJ!rrJ!'$Mm!!$m +$J2B!"Jir!!!r!i$f!!B12`!!2`1!pJ!%F!$MMJId!!4`!111"r3!"(!!iii(p3! +$ii(((2X!A!-!!!2`r3!$ii(((2N!!32`r3!$ii(((2N!!32`r!!(IMJ!!$J!F!I +m!!!rr3!(IMJ!!$J!F!Im!!!rr3!(IMJ!!$J!F!Im!!!rr!!$"`1"ar`!!MJ!$[X +!!3F$A`'"ar`!!MJ!$[X!!`F$JFIm!!)i!!lm!!!1r!!&!F!!!$Mmq`!!$[`!"3( +!!!!ir2X!!!lm!!8"`!!!12cl!!31!1!"`2d!"3i!ii!i(2i!"!i!i!(!r3!&$J$ +MJ$JFB[i!"!i!i!(!r3!&$J$MJ$JFq`!"!F$p!!0q!"q1q3!"!F$p!!0q!"q1q3! +"!F$p!!0q!"q1r!!"!F$p!!K`!!2`2`!2`1$q!!%"`2d!#(!!!r!r!!r!i2i!!3( +!r3!#F!!$9!A`2`!2`1$m!!!Fq!!$F$m!F2d!!"ci!!0`2`"`r3!!(2J!!h!r!($ +l!!!(r3!'FF$rrm!$J2X!!!Ip!!Ca`2rr`!1!q`!!"rd!"R(!rrr!!i$m!%hm!!B +IrMmF!!ImpJ!'(rir(!!(r2B!"Krq2a`!"rci!!"`r3!%iirr(i$j!!"`r3!%iir +r(i$j!!"`r3!%iirr(i$i!!Fi!!!(i!!!i%Eh!!Fi!!!(i!!!i2F!"cJ!!!IJ!!$ +JpJ!&(!ri!!rip3!&(!ri!!rip3!)(!ri!!ri!!rrqJ!)F!$mIJ!!!F!Fq!!#F!$ +m1`9q!!!"`"ci!!K`!2aq!!!"`"cc!!AMm$m!!2re!!,Mm$rb!!,Mm$rd!!-2`!! +1m`!'$m!!$J!!$r`!3IX!!`r!!!ld!!3$J!$MM[3!"!1!!111p!!%!i!!iilj!!% +"`2X!!J1!12S!!3(!q`!#!i!iqJ!"!F$l!!-$J$J!-3%2rrJ!!`1"`"cc!!-$JF! +Fm`!$!i(!(2!!!"cq!!%0[I8!!"c`!!!FqJ!#(rr`r!"D!3!Ir[m!r2d!!!(mrrd +!!!rmr`#!rJ!!(rcr!-$q!!"rr2m!i2i!qrm!m2i!!(rmr`$irJ!!2rcr!2cq!!! +Ir2m!r[i!!!rlrri!!!Ilr`1!!!!$qrm#`!!!B3!"qrm!i2i!qrm!m2i!"Rrrri! +!Ir$q!!Brri!!!!rirJ!"(rMq!!%2r2i!!3rJrJ!"$rlq!!%(`2i!!3rrrJ!"!i$ +q!!%(rrN!!JIr`2S!!JIri2S!!JIrm2S!!`Irq!"0q`!#$rrmqJ!#$rrqqJ!#$rr +rqJ!$(rrrJ2X!!arrrm$l!!-IrrrJq`!$$rrrm2X!!`IrrrMl!!-$rrrmq`!$!Ir +rr[S!r[rk!!*rrribqJ!#2rrmqJ!#(rriqJ!#(rr`qJ!#$rrJqJ!#"rr!qJ!"!rr +j!!%"r[J!!2ci!!!iiJ!#L3!#L3!#L3!#L3!#L3!5YJ!!$rEr!2ld!!!rp[m!r[X +!)[S!!(rfr`$qp!$er`$qp!$er`$qp3!!!IAr!2le!!!$q2mQr[m!r[8!!!Ier`$ +qp3!!$rAr!2le!!!IpIm!r[8!!$rer`$qp3!Q!(rer`$qp3!!IrAr!2le!26r!2l +f!!!"p2m!r[B!!!(dr`$qr`!Qq!!!!I6r!2lf!!!"p2m!r[B!!!(dr`$qpJ!!!I6 +r!2lf!!!"qrmQq[m!r[B!!!(dr`$qpJ!!!I6r!2lf!!!"p2m!r[B!!!(dr`$qq3! +QrJ!!!I6r!2lf!!!"p2m!r[B!!!(dr`$qpJ!!!I6r!2lf!!!"pImT!IrqpJ!!!I6 +r!2lf!!!"p2m!r[B!!!(dr`$qpJ!!!I6r!2lf!!!"rrmQp[m!r[B!!!(dr`$qpJ! +!!I6r!2lf!!!"p2m!r[B!!!(dr`$qr3!QqJ!!!I6r!2lf!!!"p2m!r[B!!!(dr`$ +qpJ!!!I6r!2lf!!!"qImQr2m!r[B!!!(dr`$qpJ!!!I6r!2lf!!!"p2m!r[B!!!( +dr`$qp`!R!3!"p2m!r[B!!!(dr`$qpJ!!!I6r!2lf!!!"p2m!r[B!!!(dr`$q*[B +!!!(dr`$qpJ!!!I6r!2lf!!!"p2m!r[B!!!(dr`$qpJ!!!Ihr*[Mr!2lf!!!"p2m +!r[B!!!(dr`$qpJ!!!I6r!2lf!!!"p2m!r[X!*[`!!!(dr`$qpJ!!!I6r!2lf!!! +"p2m!r[B!!!(dr`$qpJ!!!IIr*[lr!2lf!!!"p2m!r[B!!!(dr`$qpJ!!!I6r!2l +f!!!"p2m!r[8!!SN!!SN!!SN!!SN!!SN!-H8!!)$U!!9'!3)!%)$q!!)-!)$c!!8 +#!!)!!)$q!!!3m3!,`J(($M(!4,$J1('(r3"(p`!-3J)L%4#!4-N3%)L)J23!#d) +#)Jm3J%5*%"#)L2-!#d)$iK%3J%5*m"#)Kr-!$%)#!K%3J%5*!"#)J)$d!!9#!L) +4%)!C"Nb*%"#)L)$d!!Y#!F'2%'!dL1!3F)HT!!+*!!+*!!+*!!+*!!+*!!+*!!+ +*!!+*!!+*!'Ed!"LF!3!!Q`$rJ!#!!)!!J!!!!3!8!!`!!`!#rJ!#@J!"rJ!!![i +!!J-!$2`!'*`"!!#E!2q!!)!!J!#!!!!"!"3!$!!$!!,q!!*D!!(q!!!#rJ!#!`! +-r!!!!ri!!!ck!!)3!!aPr!!!#IS!!"cq!!!)rJ!G%QaP)(4PH(4P$3!"!!%!A,m +%!&bqB!"D'+`!A,ldr!!+#[rr!!%!%!!-!!2q!!!-qJ!*%!!-!"!!$'m!!ri!!!c +l!!ArrJ!!rrrq!!!RqJ!!+2i!!"K[rJ!l5'j[FQeKE!e[GA4XD@jP$A0SB@4[G`e +XEhGPFN0KFf809'Pd9'aP$3!%!!3!A,m%!&bqB!"D'+`!A,ldrJ!3!3!(!!)!$`! +$!"B!!3!Srrrq!!3-!!S!!ri!!!Rk!!B#!"!!$!!$rJ!!$2S!C!S"!")!$3!$#!! +!$2S!#J%!%`!0!!-3!!!-qJ!I%!!-!")!$3!6!!d!%!!-!"!!$!!3!!`!!"J"EJ! +@!H$i!!J"!"3!$!!$!!,q!!*D!!(q!!!#rJ!#!`!-r!!&,3&`!#J#qJ"TrJ!1!`! +Z!"!!!`!!JkJ!@J!"rJ!!![i!!J-!$2`!"N-"X3"!!LVi!!J"!"3!$!!$!!,q!!* +D!!(q!!!#rJ!#!`!-r!!'J`()!)B#+[N!#3%!!&S!$!!$!!,q!!*D!!(q!!!#rJ! +#!`!-Brd!"`'-!9d"KJ'kq!!)!3!8!!`!!`!#rJ!#@J!"rJ!!![i!!J-!$2d!"`' +I!@3"Q3("q!!)!J!8!!`!!`!#rJ!#@J!"rJ!!![i!!J-!$2d!"`'[!@`"U3(*q!! +'!`!8!!`!!f`"!!,q!!*D!!(q!!!#rJ!#!`!-r3!(!F%"F`'l!G$j!!N"!!"D!!` +!!`!#rJ!#@J!"rJ!!![i!!J-!$2d!"`''!G%"J!)Zq3!*!3%!&!!-!!-!![i!!PS +!!Ii!!!,q!!)$!!cp!!8"Q!(D!C*T!3)hq3!*!3)!&!!-!!-!![i!!PS!!Ii!!!, +q!!)$!!cp!!F"U3(P!D-#3[J!#!-!&!!-!!-!![i!!PS!!Ii!!!,q!!)$!!cm!!! ++r!!D"3*XfRi!0k2p!MfKRJ"*HCS#8V!j!(b&*!*kHA%GP`"SiYB#GGKM!&0Ia3" ++!N3!03*d!(-#D`!e!PS!23*1!%8#4`"1!N3!9`*'!'%#5`"U!P!!F!*@!(-#A3" +c!Q3!F3*V!'`#F!"R!R-!B3*d!&N#G!"4!Pd!R!)Y!-Zd&G0a$I-44J!$!"3!$!! +$!!,q!!*D!!&drJ!!![i!!J-!$2`!!!Vm!')-!YbE43"1A+8#h*Y&!%jFT3,4)jN +!5V!S!Xeh'`"@*pB#eY9T!&jjlJ,Q@,)!H+,V!Za@hJ#FkK!#kLS8!+V(bJ,IQ-! +!Sc@-!Y9RJ`#9N48#d%m0!)J6(J,23SB!JlSa!!Tdr!"!"J+T'Id!d"RE!X@"2`$ +jMB)#T*Md!4MdIJ+56pS!q3Af!TI*#3$P`XB#U4Rp!0!Cf`!(!#3!+`!Z!#m!-!! +a!$2q!!!BrJ!#i!!+r!!#"3*9rJ!%33!!!L[q!!4G!!!#5ri!")S!!!*YrJ!%EJ! +!!Q4brJ!!@[i!8%S#03!r!Q8!I`*6!$m#4!"+!MS!9!)e!&i#03"S!MN!F3)r!(N +#4J"q!N`!I`*6!(i#@J"k!Q!!G!*M!'i#C3"R!Q3!B!*L!&J#A3#R!MJ!hrJ!#!- +!&!!-!!-!![i!!PS!!Ii!!!,q!!!$H!%!$2d!!`*G!+Iq!#`&!RJ@q`"qrd!#E'4 +[!,'U%!+'XdF!YlcX!T*Pd`#&%K`#H"El!(lr3!!!rrrq!$S5!RMah!$*&Ti#K4r +B!-[QGJ+#8!!!f"4b!S*3!!$B&()#Hj!!B!$e6j`#Hj!!B!$e6j`#E*+-!2kY`!* +iGPr!L!%"ICJ#BmfC!2bRGJ*McCN!r+Gf!PT[GJ$YUD)#9jqH!2RARJ*K,aB!d'j +i!Q%[&J$3ERJ#F#cT!-F39!*MrZi!a%"m!RMah!$*&Ti#E-2J!-C'aJ!"!"3!$!! +$!!,q!!*D!!(q!!!#rJ!#!`!-q`!"!Uaa"3#"!VX!V2J!!!Vm!')0!UQ0cJ#cH!X +#UBh1!,0i#`+`#*m!XA6R!V6S23#X3A)#Z(p6!+D2[!+lfiF!RjQ1!VjJ%!#C$)! +#`)hX!*)'j`,!MH`!NJER!V-k%3#*NLi#XcS4!)Q5,J+TMFi!XhJ,!UPjGih1!,0 +i#`$H!UF!K`+q!,%#T`#a!UF!X3+S!,%#U3#a!UX!X!+X!,!#V3#[!Ui!V`+[!+i +#X!#Y!V%!V!+b!+X#X`#U!V3!U!+e!+F#Y3#Q!VB!T3+h!+3#Y`#L!VJ!S3+j!+! +#Z3#H!VS!R3+k!*X#Z`#D!VX!QAGY!V`!Q!+m!*B#[3#9!Vd!N`+q!*)#[J#4!Vi +!N!!#[J#3!!+p!)m#[!#1!VS!M3+i!)`#Y3#+!V-!L3+b!)J#X3#)!V%!K`+a!)J +#X!#,!Um!M`+Z!*8#V!#F!US!T!+T!+S#U!#Z!UJ!X!+R!,%!#[`!!J`#arm!H38 +!2J!!!XIq!!3q!!!#Zri!"$d!!!+krJ!%53!!!XAq!!42!!!#f[i!"'8!!!,SrJ! +%K`!!!ZRq!!59!!!#hIi!"*!!!!!#d2i!")8!!!,)rJ!%H3!!!XEq!!"erJ!DdJ+ +i!$X#jJ#4!X8!2!,%!$`#``!m!X%!2!+rHAF!1`+p!$X#Z`!m!VS!23+j!$m#Z!" +"!VJ!3`+j!%8#ZJ"(!VX!53+p!%S#`!",!X-!6J,'!&!#b3"8!Xd!@!,4!&d#e3" +L!YN!C`,F!'d#h`"d!Z%!HJ,M!)!#j3#&!ZB!L3,Q!)`#jJ#1!ZB!N!!#j3#4!Z- +!N3,KHAF!N!!#hJ#2!Y`!MJ,C!)`#e`#+!Y3!L!,5!)B#d!#%!Xd!JJ,-!(m#bJ" +p!XJ!H`,(!(J#aJ"f!X8!G3,%!(-!cJ,0!%S#k3#Q!YS!6!,B!%`#e`",!Y8!5J, +6!%S#d3"+!Xm!5`,1!%`#c3"1!Xd!83,0!&-#c3"9HAF#cJ"@!Y!!@!,5!&S#e!" +G!YF!B!,C!'8#h!"T!Ym!E`,L!(8#j!"l!ZB!JJ,R!)N#k!#2!ZN!P3,T!*S#k3# +H!ZN!SJ,T!+3#k!#Q!ZB!TJ,P!+B#i`#P!Z%!S`,I!+%#h!#I!YS!R3,B!*S#eJ# +B!Y8!P3,6!**`(3,5!)m#d3#0!Y!!LJ,2!)J#cJ#&!Xi!J`,0!))!#[`!!JB#X[i +!"-J!!!,ArJ!-kJ!!!Vi!!!%3!!!#TIi!"28!!!+QrJ!%i3!!!V,q!!$)rJ!!!ri +!!!cl!!(rr[S!""%!!!&5rJ!!(2i!!!Mr!%BQ!"*dCAKdC5!V)(*[G'&dD@pZ$3! +"!!%!A,m%!&bqB!"D'+`!A,ldr!!+%[rr!!%!%!!-!!2q!!!-qJ!'%!!-!"!!$0) +!&m)!!"ld!!!bp3!"!M,f!!)"$4(d!!#40IB!!d')N!#!p`!#3)M)pJ!#-)4)pJ! +#B%@!p`!#"""$p`!$""N3B2F!!`3A%#$h!!)(#Blh!$-$!!B)K2B!!N%)J2F!!`' +4#i$h!!%0%I8!!P%Bi2B!!@#)p3!"))$e!!%JX2B!!8!JqJ!cr!!"F"$e!!(J%28 +!!#$f!!)(3#$h!!)""%$e!!(%`2B!!J'(J2B!!JM#)2B!!J4#B2i!02N!!NK!J2F +!!J`J+2F!!``5""$h!!)%)4,f!!)'&L$f!!)#'4$f!!%#'28!!3%2p3!"!3!4p3! +"!H#J!!)+LY$q!!)&!M*X*r+9!5YJkJ)-A28"LZ$Q!Kd0D`'4RaB#3k-,!6)I'J) +bmT8"+f$U!!2q!!!-q`!"rrlk!!!0qJ!!(2i!!!Mq!#%5G'9iG'8J+b"cDf9h$3! +"!!%!A,m%!&bqB!"D'+`!A,ldr!!&$[rr!!%!4!33!!`!!ri!!!ck!!B3!!`!%!! +-e3!#)!!#r3!!J2X!!K!!!Id!!%$l!!S1(%6K`"!(%4a%32i!#J%)N4#)"!)NL*% +342d!#8)LK#)(`)&#)UMp!!NKm))I!)!i`I&8r3!*#%"3K!!J!5K!)[d!#J)4)L% +3!!4*%3L!r3!*aa%-F!!"a%F%30!!CrJ!!JU+d2i!+J8#I!!!!91JD3*m!!!"UD" +T!T!!!!!"bf"b!T!!!!!"G@"b!R`!!!&6S'N!!ri!!!cl!!(rr[S!!!rk!!!FrJ! +!#2i!'K*dCAKdC5!V)'4TFh4[FR3!!3!"!&br"!"F[PN)B!"D'+`!A,ldr!!+%2r +r!!%!%!!-!!2q!!!-qJ!,%!!-!"!!$#S!#SV3rJ!S"3+T!,B"@`Z3!!+She`"ZV% +!!ViPa!(4a`!#[2QD!9UAqJ+T!,B"@`Z3!18!EI-!!a!!!)$q!!U-!%!!"!!!%!! +!J2i!9%!!)!!#!!!i1)RK`!J$jKaiFAZ!!""%L%)J#!)L%4"%`)!!%%4)3K!r!K% +3#%*!3!!3I""Kq!3"#)3'%C!!-!!33#JK!!)!L%2##)JB!"K#4L#)!!$%-a*J-34 +-#!!'2%)FF!!!4L%3KL3%q3!'(K$`-H)"`-J!!!2q!!!-q`!"rrlk!!!6qJ!!(&A +q!!!)rJ!R%R4PH(4P)#XJF'9bFh"PBh4TGQ8!!3!"!&br"!"F[Q!!@KLX!&bqp2` +!#K6rr`!"!"!!$!!$rJ!!$2S!"K!!$!!3!!cp!!B8!#)"0!#f9ri!"&J!)J!"m`! +6#%aKH@9b)#-a!!)S,3"$Eh"j)'rq!!3B!!)!!I-!%`C-BAPPFM)M-3!#+#d!3fp +`H5"[rJ!%&J!"!!(c!!d)6'&jCA)J)c-!!LJY!&J&3fp`H5"[rJ!%&J!"!!(c!"- +)6'&jCA)J)c3!!LJY!%0[F(NJEri!""B!!3!"m`!6#%aKH@9b)#-e!!)S,3"$Eh" +j)'rq!!3@!!%!!I-!"`K-BAPPFL!M@!Xf!!)S,3"$Eh"j)'rq!!3@!!%!!I-!%`K +-BAPPFL!M0`!#+#d!3fp`H5"[rJ!%&J!"!!(c!"-)6'&jCA)J)cJ!!LJY!%0[F(N +JEri!""B!!3!"m`!"#%`b%@&jCA)J)cN!!LJY!%0[F(NJEri!""B!!3!"m`!6#8a +KH@9b)#-a-!)S,3"$Eh"j)'pC5d(Z!!d!#!!,!!i!$`!3!"3!&3!@!"N!'J!B!"X +!(!!G!"i!&`!I!#%!)`!L!#!!*3!Q!#F!+!!T!#S!,3!d!$8!1!"*!$i!1`!Y!'6 +q!!5F!&SBV2i!!*3C&`"D!!S!$!!0!&SC"!!&V0F!@KN)rrpLq43&!!+P)!!+r3! +$!H!#J2`!!K3!!K3&!!+P)!!+r3!$!H!#J2`!!K3!!K3&!!+P)!!+r3!$!H!#J2` +!!K3!!K3&!!+P)!!+r3!$!H!#J2`!!K3!!K3&!!+P)!!+r3!$!H!#J2`!!K3!!K3 +&!!+P)!!+r3!$!H!#J2`!!K3!!K3&!!+P)!!+r3!$!H!#J2`!!K3!!K-&!!!"i!+ +!r!!'&!!#T5!!#[d!#`N!)DKL5(J!(UKMG!%!H2RrEGhrGrrGrhIrhAIGGpehhAH +U9DT9UP@U99Ar9Ip9reArX6!$'pM!$)f!%!)J!3K!"!%#"!J3)%#!J%!J%!J%!J' +$"`iF1($J`H"`1"`1"i2"lYflGqlGZhGhZphZGl[GlM0Qc*NcCXbCQFaQ-jR-Db& +Q-hbidH2(Ladq2Kf,aq24Z(`)(#,"J!%#""!i4)-"J%!Jq3!!J2S!*i!!#!#!!!J +!L!!L!)J!)J#))SJLL#+))US!UJ#U!+S!!2m!r`$r!2rjUK84)N5)%5*%L)K%)K' +)4#)4r[hlpqrIC%QrIhqrhqrhqrhq#"3L3B!"!J5!`#%5$!3#!9HZAETekY@VkR@ +kADjAUp9q[G[RjpZpIS*%+"!S4))"pq2G2RrqrI[[alYmrRqrhrN!qF`)rrm!!2r +r!!$rq3$kI`$rrJ!"r`"[!J!!rrk)!2rqL!$rrS!!rri)rSJ!Mrk)%IL)4#)4)N5 +)L!!BCS%!''D"(rX3!2$q#!P`)"!)#!!3'"6crJ!)#"!J3%!J%!M-rJ!!-ri!&a% +L4!!4)N3!J8)N'"JN3S%!#"`qIciF#2h`r3rpm2m2AJ%2$rPh!!$qr`!!r[rjJ!$ +rqS$jL!!!rRF!!2jh!!$qI`!!r[IqG`"`rRF4"qlGhEZlhGhZrqHCI[rRQAlJqqm +%$a!)""lp%!3!%$"3Rrd!!aJN3S(q!!8"!4!3!3&i-a!34#)!L%3L!)KpZpI[elY +pr[rhim'!`H2hpqI$!B$$jqppZpI[elYprT*&LL95U&3T!(lp3Kjq!&@J3%"9#J3 +%m(JN3SF2%L%!#"3U95S8#)*%185#rJ%EhGS(fYfYF+frS,qp[Id&rIKd)NH2&b* +a[`#r[rq`H$Z`X*P#**QC*%+CppreArU[qqm#!3)m3)"!2-!K%J``3)#!#!3U9Ip +!)"#!J%%q#!J8ikS!J!#)!)!!!"Mq,"`m'!"!S!!!"!S!!)"!)"!)"!)"EETefUe +AUpErJIfp&i(rUPqr[kVeqrX2KpZpH2$Yh[rhkp@UeA)PkrGhLBq2GjMiq+TXUXD +UE+V'Veq[A`d,$3[iG#SAVeHLF8$r3%$p6a'C3L3B'#4#QGd(hA$G"pe`)&$pL$! +&!J1%5$!-!J%"%#"8U[m#"!KrIll"prIV()J8)N')!+S!!'b5JN3S%!#!3#!!!J3 +)qJ"Rprm"c-cpr`'CQIhr!@CQrIm"-c2pr`8!!2rrc-cprrh-'rrrc-bCQIrrc-a +QC[rrc-`c-rrrc-`!!2rrQCRpr`@CQFc-rrrpQ4ArrjQCCQErrjQC-c2rrjQC!!$ +rrfCQrIm$CQE-c()(rrpQCTQCrrrpCJrrrfCQ-c2rrfCQ!!$rrc-crIm4-c2-c2r +r-c1CQIrr-c0QC[rrr6-*rrmc-`!!rrm!!2hr&`!!c-crr`!!QCRrr`!!CQErr`! +!-c2rrrd!!Fc-rIm$c-crrrh-#IrrQCR-c2rrCQCT#mc-rrmc-mc-rrm!!2h-!Ir +rpm`"QCRpc!&QC[h-!6-crF`,!!$-c*QCrrr-c*QCrFcpQ4[-c*QCCQE-c*QC-c2 +-c*QC!!$-c'CQrrr-c'CQrF`&CQDCQFc-r@B,c-aQCM-cc-aQCJ!!F3R-c$-crrr +-c$-crF`,-c1CQFc--c0QCXc-r6-2c-`c-`!!c-`!!2rrc-`!!2h-%3!!QCR-c!! +!CQE-c!!!-c2-c2d!!CQCrIm*QCRrrmc-QCRrrrfC&rrrCQDCQIrr-c1CQIrr!!# +CQFc-rrqCQIh-D31CQFc-rCN2c-aQCTQCc-`c-jQCc-`!!2fC!IrrrCN"c-chQ3& +QC[fC!6-crCN4!!#CQ@CQrrqCQ@CQc-bCQ@CQrCRpCKZCQ@CQ-c1CQ@CQ!!#CQ6- +crrqCQ6-cc-bCQ6-crCN$-c0QCR)"QCRp-a@CQ6-c!!#CQ3!!rrqCQ3!!c-bCQ3! +!rCN,!!"QCTQC!!!c-jQCr3!"CQEpr`pQC[rrc-aQC[rrQCPQC[rrr@B4rrmc-fC +Qrrm!!'CQc-crrfCQrF`*CQE-c*QCCQE-c2eQ#Fc--c0QCXc-!!"T$@CQQCRrrfC +QQCR-c'CQrCN$CQDCQIeQ#CQC-c0QCTQC!!$pCJ(rrreQ!Fc-r@B"QCRhCJ%c-re +Q&`!!CQBc-rrrCQBc-mc-CQBc-jQCCQBc-reQr6-4CQBc-`!!CQB!!2rrCQB!!-c +-FJPQCJ!!QCPQCJ!!r@B&!!!c-fCQr3!"-c2pra8c-rrrc-`c-rrrQCNc-rrrCQB +c-rrrr6-,rrm!!$-cc-crrc-crF`2-c2-c*QC-c2-c'CQ-c2-c2dc%Fc-!!!c-jQ +Crrmc-jQCc-`c-rfC"6-cQCPQCQF$-c1CQIdc&jQC!!!c-fCQrrmc-fCQc-`c-fC +QQCNc-reQ!c-cCQEp-`0QCJ!!r6-"rrrp-`(-c2dc!CQCr6-"CQEh-ad!!$-c!!$ +rrc-c!!$-c$-c!!#CQ6-c!!"QCM-c!!$p-rd!F`%!!2hr'`!!rrr-c!!!rrqCQ3! +!rrpQCJ!!rrmc-`!!rrrp!!A-c2rr!!$pc"8!!-c-QCN!!-c-CQB!!-c--c-!!-c +-r3!,QCRrr`!!QCR-c!!!rCN2!!#CQ@CQ!!#CQ6-c!!#CQId!#@CQrrm!!'CQc-a +T"`!!CQDCQ3!!r@B*!!"QCM-c!!"QC[d!&c-crrm!!$-cc-`!!$-cQCN!!$-cCQB +!!2dc!`!!-c2l!!(rrrd!!Fc-r3!"QCRp!!&QC[d!!c-clZlp!!(GhId!!EZlr3! +"UUVp!!')L2d!BJ&hGrd!!999r3!"4%6p!!%L)[d!!4%4q`!"lZlp!!(GhId!!EZ +lr3!"UUVp!!')L2d!!AGhr3!"99Ap!!&%42d!!5)Lr3!"%4(l!!(Zl[d!!GhGr3! +"Zl[p!!'UU[d!!BL),rd!!AGhr3!"99Ap!!&%42d!!5)Lr3!"%4(ll[[Gql[lU[Z +)qhIl9IY%qb,l%IX!9r[r(I`!mhd&,rrrC)S#M0eV#-)'S[,A#&D%l%EM!!#P2[d +!-03!!N'V91Vr(b'hNa3a!!"NVa'`9J!XR38NN!$AF@!k0-!!`!$!!)!!J!#!!%! +!3!"!qJ"c"3!F!J(r"ri"*`B"!Ii'!3%#"3%"r38"!3-%!3(m"!%""!-"!IX$!3% +&!J%"qJ)"!3Eq!6(j!3%#"rm"![Mr!3%'rJ%"qIi"!3Ap!3(kr3%""2`"!I[m!3% +$q`%"r2X"!3,k!3(pq[i"#2N"!Ilj!J(rq$J4!!i"!3-$!3(m!`%"!J)"!Id#q`% +&rJ%#![rrrJ%BrJ%"r[i"!3,p!3(pr3%"!r`"!Icm!3(qq6-a!!`"!Im'!`(q"3% +""!3&!Id%"`(m!`3$rJ)$"2m"$36jr38'!2`&"[Vm!`J"q`-)qrXM)3!)!3%&"3i +#qIm-"2Vq#JElr3J)r2`'#[hl"!cqqJ)1rrNA&3!&!3%%"!F"r2m&!rhq!`Aqr3% +(rra$'!!3!`(r"!)"!3-"!Ii$!J%#!J%"r3)#!32q!4Rm!3%$"2m"![[r!3%$rJ% +"r2i"!3,p!3(prIi"#2`"!Ilm!J(rqaXC!!B1!IS($`(j"J%1"rS"$`Ej!3liq3m +"q2Ki%3!J!J(r"J-#r`3#!J%$!32q!rd#!J%$rIi#$3-"!J(r!3%$r!%#!J3!rJ% +B!!%"rJ!"!rX!!J)&r`%"![m"!rVr!3-'r[i",[i"!rRq!`(qr3%#"r`"![Mm!3% +'q`%"![X"![hl!3(jq`%""IS%!Ilk!3(kqJ%"#`N%q3%"qrN)!Ici25J!1JF!#`% +#!JJ#"3-+"!i%!!8'"3-'#3B-"JF($`F&#!N)!!N$#3`*"[i+$`i+"!X"$!F-#J` +0$331#!pR$B"IB&S!"[r[rqm!%!!3rIm"J!$pr`'!!2hr!S!!qrlr!B!!rIm"J!$ +pr`'!!2hr!B!!rIm"J!$pr`'!!2hr!B!!rIm"J!$pr`'!!2hr!B!!rIm"J!$pr`' +!!2hr!B!!rIm"J!$prdi"J!$pr`'!!2hr!B!!rIm"J!$pr`'!!2hr!B!!rIm"J!$ +pr`'!!2hr!B!!rIm"J!$pr`'!!2hr!B!!rIm"J!$pr`'!!2hr!B!!rIm"J!"a2B" +IB8B!"2rarr!!%!!2J!rJ!!"rr!!"rrm!!rrrJ!Irrm%2rrrJ(rrrm$rrrrNrrrr +iIrrrr(rrrrerrrrmr[m!r[Vr!2lqr`$qq[m!r[lr([jrrrrpIrrrr(rrrrdrrrr +j2rrrq"rrrr%2rrrK"rm6%Ir!!rrrJ3(rr`%!Ir`!!!rJ!8%rJ&pL-J!#rr2rp!! +-!!+!!!!m!$`!2!!m!$`!2!!m!$`!2!!m!$`!2!!m!$`!23!m!$`!23!m!$`!23! +m!$`!28e,J&pM(J!#rqrrp`!1!!-"m3(`!I!"m3(`!I#"m3(`!G!"F3(3!@!"X3$ +!!9!!S3&3!#!"83!J!9!!)3#3!!!!!9%!J!!J!!%!J!!J!3&@$i"IC!S!"2rirrB +!#`!)!%$q!!F%!!!))!!!!Id!#!L!!##!!!!%%[i!#%"!!!%3!!!N![i!!iL!!!, +q!!%352i!!`%!!!,p!!%J#2d!!"$p!!#!rJ"D#`!"!!J"U3*`!!!I%2X!qIm&qC! +!!!##J2d!!`(J!S$p!!(r!2hrq!!%!3!"!!Ml!!8I%!!!rrrp!!N6[!!"d4J!!!+ +!rJ!-!`"8!$!!B`"2!!$r!2hrq!!!!A)G%93!F3!B!((rr`"aVY4!J11+!!!6d3! +"d4J!!!+!rJ!8!`"8!+N!B`#`)!!!"JqF!!B@"!!'q3!0rrm5j!!#&p3!!K@`!!M +m!!BA5M*kY!"MrJ!+FAjU!!)N+!"aIQEq!!36!(i!N!$q!!)6rhlqr`$3F!8K&%# +!B-Vm!!,h!!(k!#)#!!%bSJ!"-[)!FApk!!%c#L!!!!%!!8+B!!(3k[rr`b5qI2d +!#rQ3!)#J!!S!"!"FZL$q!!#JrJ!#$2Q3!2i!&MFJK!"q'1J!A-0S!!JUM!"aL#$ +rrkl8r!!'F5ZX!"-!(N-,!6J!ZN#"!!"!J#S8r3!(!58!R!c-c-$j!!G-c-M%!!$ +rrrd!!cKmm(M9!!(rrrJ!"R'$fJ"F!'$q!!B&!&`!-!"a"`8!"!"aM`bCDJ!!!3! +!!!&m!!!!I!!!!$+Y+'T+!&K2Cai[,Ie1,bhpUNKX!!j`!#m!6Ud6+LP!!39QD@a +P-3)!!!"NFRFb4%&%-J%!rj!%!*!%$IN!N!4NFRFb4%&%-J%!rj!%!*!5fchC(3! +!6d%!!!'Z%#m))'`"e#"S!#BLD!!86T%J,!(8@%p-lK!)rrK1ANje6PB!!%MR%!J +SEJ!),bhq&NkY+'T+!&K2Cb*)E!#m,bhp6LmYrDT)E!!1F!![!%kY%`)T3!(86qm +!&'!J5'`![#mYr8i[,IfU5'`!$R!!,`"1V4,b+8!"e%r[!"4+V!(89`!!!(J!$`! +!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!! +"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!*!1'3%!!!%!!!!"I!! +!!(`!!!!b!&SCi#"5!!!!(!!b!!"+D@jQ!!!!#LP)rrm!N!KP33: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisDraw.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisDraw.hqx new file mode 100644 index 000000000..dfdaa69a5 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisDraw.hqx @@ -0,0 +1,160 @@ +(This file must be converted with BinHex 4.0) +:#R0TEA"XC5jME'3!C%4bGd0%FRF!N!3e@3!!!D([eJ%!X3"&@&"A!!%!3NZ%!*! +%![!#3!#3$!,`!N!"!!!"!*!5!3!!!J!#!*!(3NMB!!%!N!Vrr`#3"3%!!3!!!%J +!!!!)!!!!!3!!!!%!3NMB!*!%!3-!!3#3#3i!3NZ!!*"R&3!"!")!!3#3$8*,L!# +3#48!!!!-!!%!!"%"!!)!!J!!!3#3"!%"!!!"!!%!,3!!!3!!!C!*!*!N!3!!"J! +&"!!"!*!%3!!"!!N!#3!)!"8!%!!3!3#3"&S!!!!*!*!("J%!N!3"!N!!N#0#5e` +!3NY3!%*,9!!"!*!(3NYm!*!&!3"#5hJ!N!F"!!)!!`!%!!8!!!"#5C3!N!8"!!! +!!3!!B3#3$!J!!!!"!!!!!3!!B!!$!*!+#J!"!!"!!!!"!!"K!J%!N!S-!!)!!3! +!!$)!!'!!!`#3#J%!!`!#!!!!!3!!B3#3$"3!"!!"!!!!!3!!B3#3#`%X!!8!3NA +m!!!!%!!#!*$r!!"#5f3!N!3"!*!13NNm!%**5!#3"!%!N!4#563!N(9#56!!N2m +!N2m!N)%%!!)!N!8*!*!M"`!#rrm!N!6rN!i!N"i5!!!!!3!"!3!!!!%&"I`!!!% +!!3!#!*!,!3!#!3!!m!%!N!a)!!i*!!!$!3%"!!!"!!%"!3!1!!!"!%!#J!#3"d! +"i!#3#3%!!!!"!!!#!!3!N%N"!3%!)!#3"f3!N#)"!J!!!3!!!%!&N!!!N!TX!!( +rr`!!!'!!!!!#!!)!N'&i!!m!!!")!%J!N!3#m!*!rr(rlJ-*!P*M!J8S!r`"!!! +!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*!1%!#3#4!!rlArTJm +Y#jS!#!%!N!dC!3#3$J&-!!Mrr`!!!#J!!!!"!"8!!3!5)!%(5'9KC'PZCfRk!%I +b5!"#5e`!!!!B!%k!U!"JDK3!5J!9!!%!$#!"#P0eBQKPB@4TEQG(mNJ!3NYF!!! +!'!"1J+J!B'S8!%S!&3!!!!`J!3a5C@GeE'&b)(4PH(4)!%*,A!!!!"J!6S#S!'" +U&!"+!"8!"3!1)#m'9A*RC@jdFL"dCAKd5!"#5e`!!!!B!%k!U!"JDK3!5J!9!!8 +!$#!"#8PYF'pbG'&ZG'9iG%J!3NYF!!!!'!"1J+J!B'S8!%S!&3#!!!`J!3P$B@j +MC@aXC@4PH(4)!%*,A!!!!"J!6S#S!'"U&!"+!"8!!`!+)!%%6QpdC@9XE'9NCAK +d5!"#5e`!!!!B!%k!U!"JDK3!5J!9!3!!$#![#N0[FR*PBh4TEfjiG%J!3NYF!!! +!'!"1J+J!B'S8!%S!N!FJ!!$rr`!!!!3!&!!"!!8!!!%!!3%!!!%"!!!!!3!"*a! +!!!!3!!$rr`!!!!`!"!!"!%*,B!!!!"!!!2rr!!!!"!!%!!%!3NYS!*!A0!!#rrm +!!!!8!!!!!MrrJ!#3#!%!!!X!!!!%!$rrJ!#3#!)!!!N!!!!*!*!%Y!!'rrm!!!! +F!!!!!J!!!!%!!!N!!!!*!*!8!3!!%J!!!")!N"3"!!!E!!!!#3#3&!%!!$B!!!! +5!*!8!3!!5!!!!!N!!!!*!!!!#3#3$!%!!%J!!!!*!!!!#3!!!!N!!!!*!!!!#3# +3",3!"[rr!!!!(!!!!!)!!!!#3!+3!!#3"crliiiiiiiiiii!#'%!N!3"3!#eDY@ +V9UeDYMrpY*p*p*p*p*m!#Q!$!!!!!6rr`!#3"crqUT!(U`!-B3%!!!!"2rk4)N5 +*%L4)N6rriFFFFFFFFFF!!@!$!!!!!8!"jQD3"crmMMMMMMMMMMN!&'%!N!3"2rc +e`SpF+2A#Md!"K9@3"`%XB3#3#`(b!!Rrr`!!!$B!!!!"!+-!!!!"!!!!#`#3"!M +(J+-53faKFQPc)&K86N3J3R*TC'GP-3#3$3&38`"339GA8!!!%deTBh*[FfpQG#" +AEh*VFb!a,M&Y%`!!,1!J-5jB)&4bB@jcE'&dEh)8@&414!"8FQ&ZFfaKG'pb)%a +TFh34@&41#%&MG'%J-bi`)!!!!E!J8(*PCQ9bC@jM%deTBh*[FfpQG!"AEh*VFb! +a,M&Y%`!!,1!J-5jB)&3!!NC-4dN!!2rr!*!AS`!!!!%!!!!-!*!%#-H!Sa*$E'& +bDA-J@&414#"#FQPNCf8`!*!0!9"6!$*"9eG3!!!66@PMFQpcEfCd)&G[FQYc)$) +Z-!!r!!!X,'aP9fpbDh0K!!!!T(4[FL"-DA0d!&K86N3J-L"8FQ&ZFfaKG'pb&d0 +XBA*TFb"B9%j%)&"bC@CPFQ9ZBf9c%N-66@PMFQpcEfCd!&G[FQYc)$)Z-!!r!!! +X,'aP9fpbD`!#4Na(53!!rrm!!J#3"2id!*!2S`!!!!%!!!!B!*!%#-H!Sa*$E'& +bDA-J@&414#"#FQPNCf8!N!i"69-!!!!d!!Rrr`!!!!3!"!!"!%*,@!!"!!!!!3! +"!!%!!J!"!!-!!3!%!!%!"3!"!!B!!3!(!!%!#!!!!!Na-M-d06Bh1$N!N!P1-,J +!N!8"!*!-rrm!N!6rr`!"!!%!!!!"!*!,!3"K!!%!N"%#3!!!![!!N!B"!!%![!* +I!*!&%`'Q!*!G3NP3!*!*3NP-!*"46LfB!%i!N!3"Y3*Z!%im!!!#!*!%!E8#EJ" +#4B3!3NA)!%*'"!#3"4-!'3'Q!Pm!!3!!!3#3"!%!!!%!N!a11e`!N!9JikBP!*! +8!3!)!*!(3NQ-!!!I*!!!!!J!N!V'!!!!SJ#3+!8!!`!M!!3!"J!-!!)!+!!$!Gd +#F3!!"8`!"2rr!!!"8!!!!!%-6@&cG'9b)&0XD@4P3NN8!'"Q@!")i+S!3NN8!!! +!3NNF!'"QNJ"*-*B!3NN8!!!!3NPJ!!!!!3"#5l`!!!!"!*!%)%),+J"#54`!3NN +F!%M5QJ#3"dJ!B'DS!%N`'!"#54`!N!8"!%**@!"JCqJ!4DUN!%**(!"#5h!!!!! +"!%*,[!!!!!%!!!!")%),+J"#5@!!3NNF!3%!5!#3"3J!!3!)!*!'3)$TB!!!!$! +!!!!#!!!!&!!!!!`!!!!#3)"!J1Rf!)!!#!#!!*!%&i)!!!!"!%*,[!""T6)!!ad +'3)$PN!!!6S#S3)$JMJ!!&i)!!!!"3%)!N!8'!*"&3NN%"daKH@9b)$&6E'PNC8* +*&!"JCPJ!51#U!%**&!!!!%**(!"JCT)!56#@!%**&!!!!%**B!!!!!%!3NZm!!! +!!3#3"#"##bS!3NNF!%**(!")dTS!N!G)!'"QU!"*-"J!3NNF!*!&!3"#59J!B'I +S!%@UT!"#54`!3NY`!!!!!3"#5l`!!!!"!!!!!5"##bS!3NPJ!%**(!%"!%J!N!8 +)!!%!#!#3"N#!k@!!!!!`!!!!!J!!!"3!!!!-!!!!!N#!3)$TpJ#!!!J!J!#3""H +#!!!!!3"#5l`!3D8b!!-G"N#!jC!!!%k!U%#!i)i!!"H#!!!!!8"#!*!!!!!% +!N%h!(6'&jCA)J-P0XD@4P3NN8!'"Q@!")i+S!3NN8!!!!3NNF!'"QNJ"*-*B +!3NN8!!!!3NPJ!!!!!3"#5l`!!!!"!*!%)%),+J"#54`!3NNF!%M5QJ#3"dJ!B'D +S!%N`'!"#54`!N!8"!%**@!"JCqJ!4DUN!%**(!"#5h!!!!!"!%*,[!!!!!%!!!! +")%),+J"#5@!!3NNF!3%!5!#3"3J!!3!)!*!'3)$TB!!!!$!!!!!#!!!!&!!!!!` +!!!!#3)"!J1Rf!)!!#!#!!*!%&i)!!!!"!%*,[!""T6)!!ad'3)$PN!!!6S#S3)$ +JMJ!!&i)!!!!"3%)!N!8"!!!!!3#338*)f!G-BAPPFL!b!%ilA!"#4CJ!6MYF!%* +&Q!"1!(@*k!"eF%3!GA"%!'"bNJ"ePj3!GCH8!%iKh!"J!%3!!3#3"Q2e!03"TJ! +!!'"bdJ"&%iS(6'&jCA)J-3"12h3!B`%*!(F"E5"##bS!DJ%[!%*&j!!,8%B!6J" +#!!3!&-I3!'"cC!!8b1J!6hFX!!!!GBRS!(9`4!"eF%3!B(-'!(@AP!"ePj3!!%# +!iiS!!)4D!%*&N!!!B(-5!!$!B!"#!!3!&-I3)"3!&!!8ZB!!!-"J!%)!"2q3"!! +!!!&bD3!"!!!!!3!!!!B!3r!S)%),+J"11e`!3N@3!2%k3)$M)J!!3&S!N!80!*" +-!3#3%!8!3NP)!*!%!3#3"%**0!#3G8**-!#3r`#3r`#3J33!!J#3"3N!N"d3!!$ +rr`!!!!3!"!!"!%*&a!#3"``!!2rr!!!!B!!!!!)!N"S'$!%!rrm!!!!'!!!!!Iq +3"J#3"RH3"P@3"[q3"!!!rrpQCJ!!hGd!N!6rr`!!QCPQCJ!!QCN!N!6Gh3!!QCR +rr`!!lZi!N!4QCJ!!CQBc-`!!QCPQCM-cZj!'rj!%c-crN!5CQIq3"'CQrj!%-c2 +rrmc-rj!%c*!%rrr-c*QCrrr-c'CQrrr-c$-crrr-c!!!rrqCQIq3"*QCc-crrjQ +3"2rrQCPQC[rrQCNc-rrrQCN!!2rrCQErN!4QCXc-rrpQCTQCrrpQN!6rrfCQ-c2 +rrc-crj!%-c2-c2rr-c1CQIrr-c0QC[rr-j!%rrmc-`!!rrm!!2q3"!!!c-crr`! +!CQErr`!!-c2rr`#3"-c-rj!%c-crrmb3"2rrQCR-c2rrCQE-c2rr-c2-c2rr!!$ +-N!6rrmb3#TQCc*!%CQE-N!3c-mb3"!!!c-bCQIrrc-bCQFb3"*Q3"-c-QCPQCXc +-QCNc-mc-QCN!!-c-CQErrmc-CQE-N!4QCTQCc-aQN!6-c'CQ-c2-c'CQ!!$-c$- +crrr-c$-cc*!%-c1CQFc--c0QCXc--j!%c-`c-`!!c-`!!2rrc-`!!-b3"!!!QCR +-c!!!CQE-c!!!-c2-c!#3"*QCrj!%QCRrrmc-QCRrrjQ3"2rrCQDCQIrr-c1CQIr +r!!#CQFc-rrqCQFb3"*QCc-bCN!6-c'CQQCR-c$-cQCR-c!!!QC!%rrqCN!6-c*Q +3#QCQQC!%-c1CN!3!!*QCCQErrjQCCQE-c*QCCQDCN!4QN!5CQ@CQ!!#CQ6-crrq +CQ6-cc-bCQ6-cQC!%-c0QCTQC-j!%QCNc-`!!QCN!!2rrQCN!!-c-QCN!!*Q3"!! +!CQDCQ3!!-c1CQ3#3"'CQrj!%CQErrmc-CQErrjQCCQErrfD3"2rr-c0QC[rr!!" +QCXc-rrpQCXb3"'CQc-bCQ@CQc-aQN!6-c$-cCQE-c!!!CQDCQIrrCQDCQFc-CQD +CN!4QCTQCCT!%QCNc-fCQQCN!!'D3"2rrCT!%c-aQN!5CQ@D3#M-cCT!%!!"QCM- +crrpQCM-cc-aQCM-cQCPQCM-cCT!%-j!%CQB!!2rrCQB!!-c-CQB!!'D3"!!!-c0 +QCJ#3"$-crj!%-c2rrmc--c2rrjQC-c2rrfCQ-c2rrc13"2rr!!!c-mc-rrmc-mb +3"$-cc-bCQ6-cc-aQCM-cc-`cN!6-c!!!-c1CQIrr-c1CQFc--c1CN!3c-jQCCQB +c-jQC-j!%QCN!!$-cCQErrc-cCQE-c$-cCQDCQ6-cCT!%-c0QCM13"'CQ!!!cN!6 +rrc13"-c--j!%QCNcN!4QCM13#J!!-c-!!2rr-c-!!-c--c-!!*QC-c-!!'CQ-c- +!!$13"!#3"[q3"!!!rrr-c!!!rrqCQ3!!rrpQCJ!!rrmc-`!!rrm!N!6-c2rr!!$ +-N!3!!-c-QCN!!-c-CQB!!-c--c-!!-c-!*!%QCR-c!!!QC!%!!#CQ@CQ!!#CQ6- +c!!#CQ3#3"'CQrrm!!'CQc-`!!'CQQCN!!'D3"!!!CQBc-`!!-c2rr`!!-c2-c!! +!-c1CQ3!!-c0QCJ!!-j!%!!!c-`#3"[rr!*!%c-`!N!5CQ3#3"'CQ!*!%-c2ZlJ# +3",Zl!*!%UUS!N!5)L!#3"(Gh!*!%998!N!4%4!#3"#)L!*!%%4%!N!EGh3#3",Z +l!*!%UUS!N!5)L!#3"(Gh!*!%998!N!4%4!#3"#)L!*!%%4%!N!EZlJ#3",Zl!*! +%UUS!N!5)L!#3"(Gh!*!%998!N!4%4!#3"#)L!*!%%4(ZN!EGN!DUN!D)N!C%N!B +LN!B4N!B!N!N64&0&9!!!!9i!!rrr!!!!1!#U!!%!!!!"!*!,!3&0!!!!![!!!!* +!!!"#503!!!!"!*!4!3!"!*!'DHJ!N!`"B!#3"2q3"!#384aZG!%!#J#3#J,`!!! +#3!!!!!%!!!)!!J#3#3)!N!3G"N#!!*!%rrm!N!3")!!$!!!q!!!!SJ!!!&!!!!$ +H!!!!!3!!!J!#!!%!N!F%!*!*J!!!rrm!N!3#)!-H!!"C!!!!Q!!!!&X!!!%K!!) +!!4%!!J!#!!)!N"6rr`#3"f!!![rr!!!!+J!!!!)!N"%"!!%!N!CTk!#3$!&J!*! ++!NB!!!'6!!%!!3#3"N##!*!-!3#3%846493!!!$Z!!(rr`!!!$J!UJ!"!!!!!J# +3#`%!!+4-Irrrrhrrrrm!3NM-!*!9!3!"!*!&!3#3$J&J!*!%rj!%!(m!N&)"!*! +-![!!!!*!!!!!!3!!!J!#!*!*!`#3""d'3)!!N!6rr`#3"cB!!Irr!!!!+J!!!!) +!N"%"!!%!N!CSeJ#3$!&J!*!)4&0&9!!!!,B!!2rr!!!!1!#U!!%!!!!$!*!06@P +M!!,`!!!#3!!!3NM%!*!9!3!"!*!&!J#3$J&J!*!%rj!%!*"4('jd!!!!0J!"rrm +!!!!U!!!!!J#3%3%!!3#3"QMF!*!-!@!!N!K%8d98!!!!9!!"!!!!"`#3"))!!3! +!"!!!!!%!!!!(!!%!!3!"!!!!3NCB!%*&T!"#4I!!N!J%!*!)2!!5!%*&i!!"!") +!N!F"!*!(#!#3#``!N!89!!%!%J!"!*!(#J#3"3J!3NN)!!!!#&0XD@4P)$)!N!P +%8d98!!!!YJ!!rrm!!!!i!+S!!3!!!!8!N""rrrrrIrrrr`"#58!!N"8"!!%!N!C +SVJ#3$!&J!*!%rj!%!*"A0J!"rrm!!!!U!!!!!J#3%3%!!3#3"QLZ!*!-!@!!N!K +%8d98!!!"*J!#rrm!!!!i!+S!!3!!!!B!N!X"!8d!!!!#m!!!!N!!!%**!*!%!3# +3%3%!!3#3"QRS!*!-!@!!N!6rN!3!N&%FER3"!!S!N!`%!!!AJJ!!!3!!!J!#!*! +*"`#3""d'3)!!N!6rr`#3"!-J!!i!!"U!!!!DJ!!"HS!!!L@!!3!"(`!#!!)!!3# +3&2rr!*!(B!!#rrm!!!!U!!!!!J#3%3%!!3#3"QRS!*!-!@!!N!S#4J!!!C-!!3! +"!*!'3))!N!`"r!#3%%46493!!!$Z!!(rr`!!!$J!UJ!"!!!!"`#3#`%!!+4-Irr +rrhrrrrm!3NMi!*!9!3!"!*!&"J#3$J&J!*!%rj!%!(m!N&)"!*!1"!!!&i)!!!% +!!!)!!J#3#3J!N!3G"N#!!*!%rrm!N!Ff!!(rr`!!!#S!!!!#!*!4!3!"!*!'D0B +!N!`"B!#3#%46493!!!#f!!$rr`!!!$J!UJ!"!!!!#!#3$8eTB`!#m!!!!N!!!%* +*$!#3&3%!!3#3"3F!N!i"B!#3"2q3"!#384aZG!!!!$B!!Irr!!!!+J!!!!)!N"% +"!!%!N!CSh!#3$!&J!*!)4&0&9!!!!CB!"2rr!!!!1!#U!!%!!!!*!*!,!3&0!!! +!![!!!!*!!!"#5i`!!!!"!*!4!3!"!*!'DHJ!N!`"B!#3"2q3"!#384aZG!%!#J# +3$!3!!"H#!!!"!!!#!!)!N!N+!*!%(3C!J!#3"2rr!*!%!5!!!`!!2J!!!'`!!!" +-!!!!NJ!!!!%!!!)!!J#3#3`!N!Q!!!$rr`#3"!)J!`i!!&#!!!"VJ!!!8B!!!@L +!!3!"!!!#!!)!N"Err`#3"!8J!)i!!)q!!!"pJ!!!r)!!!6Z!!3!"%3!#!!)!N"E +rr`#3"f!!![rr!!!!+J!!!!)!N"%"!!%!N!CTk!#3$!&J!*!+!NB!!!'6!!%!!3# +3"N##!*!-!I`!N""%8d98!!!!lJ!"rrm!!!!i!+S!!3!!!!S!N!X"!!#N6(rrrrp +rrrrr!%**A!#3&3%!!3#3"3N!N!i"B!#3"2q3"!"r!*"5!3#3$J3!!"H#!!!"!!! +#!!)!N!N,!*!%(3C!J!#3"2rr!*!(0J!"rrm!!!!U!!!!!J#3%3%!!3#3"QM@!*! +-!@!!N!K%8d98!!!!YJ!!rrm!!!!i!+S!!3!!!!X!N!e0D@-!![!!!!*!!!"#593 +!N"8"!!%!N!8+!*!1!@!!N!6rN!3!N&%FER3!!!!f!!(rr`!!!#S!!!!#!*!4!3! +"!*!'D0`!N!`"B!#3#%46493!!!"8!!%!!!!(!*!%JJ!"!!!-!!!!#3!!!!F!!3! +"!!%!!!"#4J`!3NB)!%*'B!#3#!3!N!JQ!!i!3NC8!!%!$J#3"`%!N!F)!*!,$!# +3"48!!!!-!!%!N!F+!*!&#!"#4K3!!!!)8faTC'8J-3#3#846493!!!$Z!!(rr`! +!!$J!UJ!"!!!!$3#3#`%"63!!!!,`!!!#3!!!3N9F!!!!!3#3#J*'!!!"N`!"!!% +!N!CTk!#3$!&J!*!%rj!%!*"4('jd!3!+!*!-"!!!&i)!!!%!!!)!!J#3#3i!N!3 +G"N#!!*!%rrm!N!GJ!!,rr`!!!#S!!!!#!*!+!NB!!!'6!!%!!3#3"QRS!*!-!@! +!N"%"!!%!N!C!JJ#3$!(m!*!34&0&9!!!!1i!!Irr!!!!1!#U!!%!!!!1!*!,!3! +!T%arrrrrIrrrr`"#4A3!N"8"!!%!N!80!*!1!@!!N!6rN!3!I`#38J%!N!i%!!! +AJJ!!!3!!!J!#!*!*$`#3""d'3)!!N!6rr`#3"cB!!Irr!!!!+J!!!!)!N"%"!!% +!N!CSeJ#3$!&J!*!)4&0&9!!!!,B!!2rr!!!!1!#U!!%!!!!2!*!06@PM!!,`!!! +#3!!!3N9N!*!9!3!"!*!&$J#3$J&J!*!%rj!%!*"4('jd!!!!0J!"rrm!!!!U!!! +!!J#3%3%!!3#3"QMF!*!-!@!!N!K%8d98!!!!lJ!"rrm!!!!i!+S!!3!!!"!!N!X +"!8d!!!!#m!!!!N!!!%**)!!!!!%!N"%"!!%!N!CTk!#3$!&J!*!%rj!%!*"4('j +d!3!+!*!-"!!!&i)!!!%!!!)!!J#3#4%!N!3G"N#!!*!%rrm!N!GJ!!,rr`!!!#S +!!!!#!*!4!3!"!*!'DHJ!N!`"B!#3#J*'!!!"N`!"!!%!N!BG"J#3$!&J!*!34&0 +&9!!!!1i!!Irr!!!!1!#U!!%!!!!4!*!,!3!!T%arrrrrIrrrr`"#54J!N"8"!!% +!N!83!*!1!@!!N!6rN!3!I`#38J%!N!i%!!!AJJ!!!3!!!J!#!*!*%J#3""d'3)! +!N!6rr`#3"cB!!Irr!!!!+J!!!!)!N"%"!!%!N!CSeJ#3$!&J!*!)4&0&9!!!!,B +!!2rr!!!!1!#U!!%!!!!5!*!06@PM!!,`!!!#3!!!3NN3!*!9!3!"!*!&%3#3$J& +J!*!%rj!%!*"4('jd!!!!0J!"rrm!!!!U!!!!!J#3%3%!!3#3"QMF!*!-!@!!N!a +'6P40!!!!9!!"rrm!!!")!!!!!3!9!"8!3Nb!#8KPE(CPG'PMBH0k!!#%@J"#6)! +!!&pXCAKd!*!&)%),+L!)3)!!4Lh'!*!%CAKd!*!&3)$69J!!Af`!N!3Z1!!!!3! +!!!&2!!!!6`!!!&)!!!"X!!!'cJ!!!%i!!!!"!J!!*3!!!)!!!!!&!*!%#R0TEA" +XC5jME'3!!J!!!'4%FRG$4(*h!*!+C%4bGd0%FRF!N"M4CljZ!*!'!D%!N(VrN!J +!!!!V!31!X3!!"6%Z-(Bc(N0XBA*TFd4bBAFJ-5i`GM-0CQpb)%eKBfPZG'pcD!! +!!!d"!i#a!!!&-5i`GM-!N!3,#N0XBA*TFd4bBAF!!!%!!!!"6`!!!%m!!!"5!%* ++2"Tb!!!!(!"5!!&fCA*c!!%!%P088L!!!!!U!!(rr`#3#3,rr`!!!#m!N!5rp2r +r!!!!3!#3""G5: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_2.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_2.0.hqx new file mode 100644 index 000000000..ec786ea6b --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_2.0.hqx @@ -0,0 +1,161 @@ +(This file must be converted with BinHex 4.0) +:#R"KD@jd-LjMGfX!3eG39%*23Nm"!!!#mb`!!!'L!53#!$`$3Np#6`!"!%m)E!# +3"!-B!Q3!13!j!$N!13!j!$N#h`)V!3!!!3#3%J%!!!)!!J!!!%m*U!!"!*!&!3! +"!!)!(&La!!N!!!!"!!!!!3"2#DJ!N!3'%`#3#`i!6`QB!*"R&3!!$!%!N!e2#!! +%"!#3"48!!!`"!!"BJ3),!!!"!*!&!3!!!3!"!#d!!3%!!3#3"&S!!!!5!*!&"J% +!N!3"!'3!N#8-!!$rr`!!!'!!!!!#!!!!H!!2!!!!5!")!*!%![!#32rarqi$#3* +5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3#3$K! +!N!N3!2qerkB2,3ZD!!J"!*!0'3%!N"FF!!$rr`!!!!3!%!!"!!8!!!%!!3%!!!% +!N!T2,,`%!*!%!3!3!*!+rrm!N!6rr`!"!!%!!!!"!*!,!3'K!!%!N")"X3!!!E% +!N!8"!!%!8J*U!*!'!DB!N"e2"l3!N!P2"k3!N(92"b!!N!Fb!DB#DJ!"!!!"!*! +%!3!!!3#3$%m`E!#3"9VP*JX!N!i"!!J!N!G2"k`!!"mN!*!-rj!)!#J!!`(G!R` +!!d46493!!!$i!!,rr`!!!"B!`!!#"!!!!3!)E1!!6`Q8!!J!6`Rm!$P!J2ZU!*! +&6`QJrj!%!E)"XJ"2#F!!@Ydm!&UF-J!"!%m*Y2q3"!'b!E)!5!'a!E%!!!!##!F +C&!J!!IB"!*!&8)FSJCUUdUS&&!6d"06"k@D%i[,LmM+QbbM,+-XQbbDU-'#5%d# +U-$%)"R)[J-12"i)ZhX11"+CPaLb@"a"RYQHQ*HJQUR$H!03!!3!"!'N!N!S#1!' +Q!!%!!3!!!eS!N!TXi!!!!!%!!3!!"%X!N!S#1!'Q!!%!!3!!!eS!!!J)!!!1i!! +!!2m!!2q3"J!"rj!%c-`!![q3"*QC!!2rN!4QCJ!%rj!%-c-!"Iq3"!!!!!Errmc +-rrm!"rrrc*!%!!Mrrmc-QCN!#Irrc-aQCJ!+rrr-c$-c!![rrmc-!!!!$2rrQCR +rr`!0rrqCQFc-!!lrrjQ3"!!2rrqCQ@CQ!"$rrjQC-c-!%IrrQCN!!!!5rrpQC[r +r!"2rrfCQc-`!&2rrCQDCQ3!9rrpQN!3!&[rrCQBc-`!ArrpQCJ!!!"Mrrc-crrm +!'Irr-c2-c!!Drrmc-jQC!"[rrc-cCQB!(2rr-j!%!"hrrc-c!!!!([rr!!$rr`! +Irrm!!-c-!#$rr`!!QCN!)Irr!!"QCJ!Lrrm!!$-c!#2rr`#3"56-c2q3"!!Pc-c +rrmc-!#E-c2rrQCN!*mc-rrpQCJ!Sc-crrc-c!#R-c2rr!!!!+Xb3"2rr!#[-N!B +!,-b3"*QC!#h-N!4QCJ!Zc*!%-c-!,mb3"!!!!$$-c*QCrrm!-Fc-QCR-c!!bc-b +CN!3!-mc-QCPQCJ!dc-bCQ6-c!$A-c*QC!!!!0Xc-CQErr`!hc-aQCXc-!$M-c'C +QQCN!1Fc-CT!%!$V-c'CQ-c-!1mc-CQB!!!!mc-`c-rrr!$h-c$-cc-`!2Xc--c1 +CQ3!rc-`c-fCQ!%$-c$13"!""c-`c-`!!!%,-c!!!rrm!3mc-!!$-c!"%c-`!!*Q +C!%A-c!!!CQB!4Xc-!!!c-`"(c-`!N!9)QCRrN!3!5CQCrrr-c!"+QCRrrjQC!%Z +CQIrrCQB!6*QCrrmc-`"0QCRrr`!!!%kCQFc-rrm!6jQCc*!%!&#CQFc-QCN!8CQ +Cc-aQCJ"5QCR-c$-c!&1CQFc-!!!!9*Q3"2rr!&@CN!6-c!"@QC!'!&HCN!4QCJ" +BQC!%-c-!@CQ3"!!!!&UCQ@CQrrm!@jQCCQE-c!"FQCPQCTQC!&fCQ@D3"!"HQCP +QCM-c!&qCQ@CQ!!!!B*QC-c2rr`"KQCNc-mc-!'+CQ6-cQCN!BjQC-c0QCJ"NQCN +cN!3!CCQC-c-!!!"QQCN!!2rr!'HCQ3!!c-`!D*QC!!#CQ3"TQCN!!'CQ!'UCQ3! +!-c-!DjQC!*!&E'CQrj!%!'eQC[rrc-`!EQCQrrqCQ3"[CQErrfCQ!("QC[rr-c- +!F@CQrrm!!!"bCQE-c2rr!(0QCXb3"!"dCQE-c*QC!(9QCXc-CQB!GQCQc-`c-`" +hCQE-c!!!!(KQCTQCrrm!H@CQQCR-c!"kCQDCN!3!HfCQQCPQCJ"mCQDCQ6-c!(e +QCTQC!!!!IQD3"2rr!(pQN!6-c!#!CT!%QCN!J@D3"J##CT!%-c-!JfD3"!!!!)4 +QCM-crrm!K@CQ-c2-c!#'CQBc-jQC!)GQCM-cCQB!L'CQ-j!%!)PQCM-c!!!!LQC +Q!!$rr`#,CQB!!-c-!)aQCJ!!QCN!M@CQ!!"QCJ#1CQB!!$-c!)pQCJ#3"C!!-c2 +rN!3!N6-crrr-c!#5-c2rrjQC!*-c-rrrCQB!P$-crrmc-`#9-c2rr`!!!*Bc-mc +-rrm!Pc-cc*!%!*Jc-mc-QCN!Q6-cc-aQCJ#D-c2-c$-c!*Xc-mc-!!!!R$-cQCR +rr`#G-c1CQFc-!*ic-jQ3"!#I-c1CQ@CQ!+!c-jQC-c-!S6-cQCN!!!#L-c0QC[r +r!+-c-fCQc-`!T$-cCQDCQ3#P-c0QN!3!TM-cCQBc-`#R-c0QCJ!!!+JcN!6rr`# +T-j!%c-`!UM13"*QC!+XcN!4QCJ#X-j!'!+dcN!3!!!#Z-c-!!2rr!+mc-`!!c-` +!X$-c!!#CQ3#a-c-!!'CQ!,)c-`!!-c-!Xc-c!*!&Y!!!rj!%!,8!!2rrc-`!YJ! +!rrqCQ3#h!!$rrfCQ!,J!!2rr-c-!Z3!!rrm!!!#k!!$-c2rr!,X!!-b3"!#m!!$ +-c*QC!,d!!-c-CQB![J!!c-`c-`#r!!$-c!!!!-!!!*QCrrm!`3!!QCR-c!$#!!# +CN!3!``!!QCPQCJ$%!!#CQ6-c!-8!!*QC!!!!aJ!!CQErr`$(!!"QCXc-!-J!!'C +QQCN!b3!!CT!%!-S!!'CQ!!!!b`!!CQBc-`$-!!!c-rrr!-d!!$-cc-`!cJ!!-c1 +CQ3$2!!!c-fCQ!0!!!$13"!$4!!!c-`!!!0)!N!6rr`$6!*!%c-`!e!#3"*QC!08 +!N!4QCJ$@!*!%-c-!eqlZ!*!&f0hG!*!&fEZl!*!&fUUU!*!&fiL)!*!&h(Gh!*! +&h999!*!&hN4%!*!&hb)L!*!&i"%4!*!&i3!!lZi!!!$L!!$Gh3!!!1-!!,Zl!!! +!j!!!UUS!!!$P!!#)L!!!!1B!!(Gh!!!!j`!!998!!!$S!!"%4!!!!1N!!#)L!!! +!kJ!!%4%!!!$V!*!%lZi!l!#3"0hG!1d!N!5lZ`$Z!*!%UUS!l`#3")L)!2!!N!4 +hG`$a!*!%998!mJ#3"%4%!2-!N!3L)J$d!*!%%4%!pHk3"J$fhC!'!2HlN!B!q+U +3"J$jL*!'!2ThN!B!qe@3"J$m4*!'!2dLN!B!rK'3"J$r!*!(!Z6F!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*#jr`!!!2m!!!$r!!!!r`!!!2m!!!$r!!! +!r`!!!2m!!!$r!!!!r`!!!2m!N2m!N)`MN#X!N2m!N($r!2m!r`$r!2m!)j",!2m +!r`$r!2m!r`#3r`#39L13A`#3r`#352m!!!$r)j"a!!$r!!!!r`#3r`#30L13I`# +3r`#3+[m!r`$r!#13L`$r!2m!r`#3r`#3(L13P`#3r`#3&2m!!!$r)j#K!!$r!*$ +r!*!-)j#V!*$r!!$r!2mMN,Ar!2m!N2JMN,d!N2$r!!!MN-Ar!*$V)j$,!*$Mr`! +MN0-!r`#3h#13f3#3e[m!)j$I!*$5)j$P!*$+r`!MN1X!r`#3a#13m3#3`513pIm +!N,XMN2X!N,Ar!#13r`$r!*#a)j$r)j!%!*#Yr`!MN2mMN!J!N+XMN2mMN!`!N+A +r!#13rb13%!$r!*#K)j$r)j!8!*#I)j$r)j!B!*#F)j$r)j!D!*#Brb13rb13([m +!N*8MN2mMN#!!N*-MN2mMN#3!N*!MN2mMN#B!N)cr!#13rb13+!$r!*#+)j$r)j! +U!*#*)j$r)j!Zr`#3K513rb13-!#3JrmMN2mMN$,r!*#")j$r)j!d!*#!)j$r)j! +fr`#3IL13rb130J#3IL13rb131!#3I#13rb131J#3H[mMN2mMN$S!N(SMN2mMN$` +!N(Ir)j$r)j!qr`#3GL13@2mM)rmMN"2r)j!)rb13"[rr)rmM)rmMN,F!N(BMN&R +r)b2r)j!Frb13"ImMN!Er)j#i!*"e)j!irrrr)j!(rrrr)b2r)rrr)b2rrb-M)rr +rrb13"2mM)rmMN!6r)rrr)j!%rrrr)j!%rb-Mrb2rrb-Mrrrr)b-Mrrrr)rmM)rm +M)b2rrb13X`#3G5130rmM)b2r)j!&rb-M)rmMrrmM)rrr)b2r)rmM)b2r)b-Mrb- +Mrb13"2rr)b2r)b2r)b-Mrb-M)rmM)rrr)b2r)rmMN!Ar)b-Mrb-Mrb-Mrb-Mrb1 +3XJ#3G5131[rr)j!&rb13"ImM)b2r)b-Mrb13"2rr)b-Mrb-Mrb13"2mMN!6r)j! +%rrmM)b2r)b2r)b-Mrb2r)j!&rb-M)rmM)rmMrb13"2mMN,%!N(2r)j!jrrmMrb1 +3"[rrrb-Mrb-M)rmM)b2r)b2rrb2r)b-Mrb-Mrb13"2mMN!6r)b2rrb2r)b-Mrb- +Mrb-M)rmMrb13"ImM)b2r)b2r)rq3"L13XJ#3Fb1312mM)b2r)j!*rb2r)b-Mrb- +M)rmMrb-M)rmM)b2r)b2r)j!%rb13"2mMrb-M)rmM)b2r)b2r)b-Mrb2r)j!&rb- +M)rmM)rmMrb13Y`#3F[mMN$Mr)b2rrb13"ImM)b2r)rmM)b2r)b-Mrb2r)b2rrb- +M)rmM)rmMN!6rrb-Mrb-Mrb-MrrmM)b2r)b2r)b-Mrb2r)j!&rb-M)rmM)rmM)rm +M)rmMN,2r!*"b)j!jrrmM)rmMN!ArrrmM)rmM)b2r)b-Mrb-MrrmM)rmM)rmM)rm +MN!6r)rrr)j!%rrmM)rmM)rmM)rmM)b2r)b2rrb-M)rmM)b2r)b2r)b-MrrmMN,3 +!N(,r)j"Lrb13hJ#3Fb13B[mMN0i!N(,r)j"Lrb13h[m!N()MN2mMN%)!N(3MN2m +MN%!!N(8MN2mMN%!!N(8MN2mMN%!!N(8MN2mMN%!!N(BMN2mMN$lr!*"f)j$r)j! +q!*"i)j$r)j!m!*"k)j$r)j!k!*"krb13rb131J#3I#13rb131!#3IImMN2mMN$E +r!*"q)j$r)j!f!*#!)j$r)j!d!*##)j$r)j!b!*#%)j$r)j!`!*#')j$r)j!Z!*# +)rb13rb13+J#3M#13rb13+!#3MImMN2mMN#Er!*#2)j$r)j!N!*#4r`!MN2mMN#! +!N*BMN2mMN"i!N*Mr)j$r)j!Dr`#3Qb13rb13'!#3Rb13rb13&!$r!*#K)j$r)j! +3!*#Pr`!MN2mMN!`!r`#3U513rb13#!#3Vb13rb13"!$r!*#a)j$r!*#er`!MN2X +!r`#3ZL13p3#3`2mMN2%!N-BMN1X!N-Rr!2mMN1Ar!2m!N-mMN0m!N0Ir)j$C!!$ +r!*$E)j$6!*$Kr`$r!#13b`$r!2m!N1JMN-8!N2$r!!!MN,hr!*$k)j#e!*$r!2m +!r`!MN+X!r`$r!*$r!*!,)j#K!*$r!*!Ar`!MN*F!!!$r!*$r!*!J)j#,!*$r!*! +Ur`$r!2m!)j"r!2m!r`$r!*$r!*!h)j"a!*$r!*"(r`!!!2m!)j"I!!!!r`!!!2m +!N2m!N&JMN%X!N2m!N'Vr!2m!r`$r!2m!r`$r!2m!)j!V!2m!r`$r!2m!r`$r!2m +!r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3TAB!!!"f!!!!GJ!!!(B!!!"f!!!!GJ! +!!(B!!!"f!!!!GJ!!!(B!!!"f!*$r!*#0)j!S!*$r!*#-GL13+!#3$hB!!!"f!!! +!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!! +!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ#3r`#3,513+!#3%&@36`#3r`#3,AB +MN#J!N!pf9C"2GJ#3r`#3,513+!#3%&@36`#3r`#3,ABMN#J!N!pf9C"2GJ#3&RB +!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B +!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B +!!!"f!!!!GJ!!!(B!!!"f!*#P)j!S!*!39C"2!*!B6*"`!*#NGL13+!#3$hC9N%p +f!*!@GNb3F!#3T513+!#3%&@36`#3'%b3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(! +!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*! +39C"2!*!B6*"`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!#3T513+!#3%&@36`#3'%b +3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j! +S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*"`!*#NGL13+!#3$hC9N%p +f!*!@GNb3F!#3T513+!#3%&@36`#3'%b3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(! +!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*! +39C"2!*!B6*"`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!#3T513+!#3%&@36`#3'%b +3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j! +S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*"`!*#NGL13+!#3$hC9N%p +f!*!@GNb3F!#3T513+!#3%&@36`#3'%b3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(! +!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*! +39C"2!*!B6*"`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!#3T513+!#3%&@36`#3'%b +3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N""9N%m!N"K-N(!!N+4f!(B +!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ#3$hC9N%pf!*! +@GNb3F!#3r`#348b3F!#3r`#34(C-N(!!N2m!N%9-N(!!N2m!N%4f!!!!GJ!!!(B +!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B +!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B +!!!"f!!!!GJ#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3A846493!!!"8!!$ +rr`!!!#J!5!!"!!!!!J!!!%X!!!$%m`"rrrrrIrrrr`"2#$`!!!!"!*!4!3!"!*! +&!5qL!*!-!9S!!!"J!!,rr`!!!#S!!!!#!*!4!3!"!!!!6`QS,k)!N!`"@J#3%3% +!!3#3"3%!@J#3$!%'!*!84Nj863!!!&3!!Irr!!!!5!!!!!%!&3!9!*!%#8KPE(C +PG'PMB3#30N099&-!N!4%8e90!!!!*J#3$`i08'9bCQpbE@%J9A0PFJ#3#%K%6NN +!!!!'!!"&9%*-!!!!1%C19%d!![*33e988`!#mUa%8e90!!,bY%K%6NN!![,L494 +#6!!#mZcrr[hmqrVjq2$am[2dpIEhGBX!!!%!!!!"5!!!!%J!!!"D!!!S[`K,CAN +J3f&`Flm#!!!!C'CTE'YPH@-K!!"S!!!*F'&TER3ZBhGV!J!!!%0A8&4#6d*2!*! +-3eG39%*23Nm!N"M2Xq0a!*!'!D)!N!B1!!!!+,m)6QpdC5"3B@5r!J!#!%&38%a +ZF'4d)3!!D!"!!*!%+-J!N!d"$UX!!5!!UQ-p!+TM23#3)`&-!!N!N!`C!!!!+,m +!!!!18'9bCQpbE@%J9A0PFJ#3"#,2Xq0a!!"35808!qJ!!Fqcih&"GA4S9%9B9!2 +U!!-!N!F-#d0XBA*TFeG[FQYc!!!"!!!!!8J!!!")!!!!@J"2#@3D&!!!!"`!@J! +#9%9B9!!!!"T`EQpd!!!!*P088L!!!!!b!qVrr`#3#[rr!!!!%J"2"h5rp2rr!!! +!1!"2"f"p)J: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_4.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_4.0.hqx new file mode 100644 index 000000000..4b44db2ec --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_4.0.hqx @@ -0,0 +1,181 @@ +(This file must be converted with BinHex 4.0) +:#R"KD@jd0#jMGfX!3eG39%*23Nm"!!!#qC3!!!'L'6m%!*`!3Np#6`!"!&J9R!# +3"!-B!Q3!13!j!$N!13!j!$N#h`)V!3!!!3#3%J%!!!)!!3!!!&J65!!"!*!&#!! +"!!!!!3!"!!)!(&La!!N!!!!"!!!!!3"B%dJ!N!3'%`#3#`i!6`#3D48!!!`"!*! +2@"@J"!6rr`!!!!%!"J(j!3#"@!!#!!)!N!S"!!!"!!%!,3!"!3!"!*!%@J!!!") +!N!8'!3#3"!%!!3#3'3i08'9bCQpbE@%J9A0PFJ#3$hJ!$`!!!%J!5!#3"!,`!N$ +rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3!#!!!!!5F +2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!*!,(!!!rrm!!!!%!"!!!3!&!!! +"!!%"!!!"!*!+@C-X"!#3"!%!%!#3#[rr!*!%rrm!!3!"!!!!!3#3#`%"S3!"!*! +5!E%!!!'a!*!&!3!"!&)#DJ#3"J'Q!*!G@"-S!*!*@"-N!*"e@"@X!*!(-J'Q!QS +!!3!!!3#3"!%!!!%!N!aCY,!!N!9T*e),!*!1!3!)!*!(@"08!!!I*!#3$JX!!!" +#!!!S!!-"h3*m!!0%8d98!!!"%J!#rrm!!!!@!0S!!J3!!!%!#'fd!&J62!!)!&J +61!"6hpl)!3"B%d!!F"#!rj!%!E)"XJ"B%c3!@ir#!&J63!!!!(!4C2q3"!'b!E) +!5!'a!E%!!!!##!FC&!J!!IB"!*!&8)FSJCUUdUS&&!6d"06"k@D%i[,LmM+QbbJ +!N"V,+-XQbbDU-'#5%d#U-$%)"R)[J-12"i)ZhX11"+CPaLb@"a"RYQHQ*HJQUR$ +H!03!!3!"!'N!N!S#1!'Q!!%!!3!!!eS!N!TXi!!!!!%!!3!!"%X!N!S#1!'Q!!% +!!3!!!eS!!!J)!!!1i!!!!2m!!2q3"J!"rj!%c-`!![q3"*QC!!2rN!4QCJ!%rj! +%-c-!"Iq3"!!!!!Errmc-rrm!"rrrc*!%!!Mrrmc-QCN!#Irrc-aQCJ!+rrr-c$- +c!![rrmc-!!!!$2rrQCRrr`!0rrqCQFc-!!lrrjQ3"!!2rrqCQ@CQ!"$rrjQC-c- +!%IrrQCN!!!!5rrpQC[rr!"2rrfCQc-`!&2rrCQDCQ3!9rrpQN!3!&[rrCQBc-`! +ArrpQCJ!!!"Mrrc-crrm!'Irr-c2-c!!Drrmc-jQC!"[rrc-cCQB!(2rr-j!%!"h +rrc-c!!!!([rr!!$rr`!Irrm!!-c-!#$rr`!!QCN!)Irr!!"QCJ!Lrrm!!$-c!#2 +rr`#3"56-c2q3"!!Pc-crrmc-!#E-c2rrQCN!*mc-rrpQCJ!Sc-crrc-c!#R-c2r +r!!!!+Xb3"2rr!#[-N!B!,-b3"*QC!#h-N!4QCJ!Zc*!%-c-!,mb3"!!!!$$-c*Q +Crrm!-Fc-QCR-c!!bc-bCN!3!-mc-QCPQCJ!dc-bCQ6-c!$A-c*QC!!!!0Xc-CQE +rr`!hc-aQCXc-!$M-c'CQQCN!1Fc-CT!%!$V-c'CQ-c-!1mc-CQB!!!!mc-`c-rr +r!$h-c$-cc-`!2Xc--c1CQ3!rc-`c-fCQ!%$-c$13"!""c-`c-`!!!%,-c!!!rrm +!3mc-!!$-c!"%c-`!!*QC!%A-c!!!CQB!4Xc-!!!c-`"(c-`!N!9)QCRrN!3!5CQ +Crrr-c!"+QCRrrjQC!%ZCQIrrCQB!6*QCrrmc-`"0QCRrr`!!!%kCQFc-rrm!6jQ +Cc*!%!&#CQFc-QCN!8CQCc-aQCJ"5QCR-c$-c!&1CQFc-!!!!9*Q3"2rr!&@CN!6 +-c!"@QC!'!&HCN!4QCJ"BQC!%-c-!@CQ3"!!!!&UCQ@CQrrm!@jQCCQE-c!"FQCP +QCTQC!&fCQ@D3"!"HQCPQCM-c!&qCQ@CQ!!!!B*QC-c2rr`"KQCNc-mc-!'+CQ6- +cQCN!BjQC-c0QCJ"NQCNcN!3!CCQC-c-!!!"QQCN!!2rr!'HCQ3!!c-`!D*QC!!# +CQ3"TQCN!!'CQ!'UCQ3!!-c-!DjQC!*!&E'CQrj!%!'eQC[rrc-`!EQCQrrqCQ3" +[CQErrfCQ!("QC[rr-c-!F@CQrrm!!!"bCQE-c2rr!(0QCXb3"!"dCQE-c*QC!(9 +QCXc-CQB!GQCQc-`c-`"hCQE-c!!!!(KQCTQCrrm!H@CQQCR-c!"kCQDCN!3!HfC +QQCPQCJ"mCQDCQ6-c!(eQCTQC!!!!IQD3"2rr!(pQN!6-c!#!CT!%QCN!J@D3"J# +#CT!%-c-!JfD3"!!!!)4QCM-crrm!K@CQ-c2-c!#'CQBc-jQC!)GQCM-cCQB!L'C +Q-j!%!)PQCM-c!!!!LQCQ!!$rr`#,CQB!!-c-!)aQCJ!!QCN!M@CQ!!"QCJ#1CQB +!!$-c!)pQCJ#3"C!!-c2rN!3!N6-crrr-c!#5-c2rrjQC!*-c-rrrCQB!P$-crrm +c-`#9-c2rr`!!!*Bc-mc-rrm!Pc-cc*!%!*Jc-mc-QCN!Q6-cc-aQCJ#D-c2-c$- +c!*Xc-mc-!!!!R$-cQCRrr`#G-c1CQFc-!*ic-jQ3"!#I-c1CQ@CQ!+!c-jQC-c- +!S6-cQCN!!!#L-c0QC[rr!+-c-fCQc-`!T$-cCQDCQ3#P-c0QN!3!TM-cCQBc-`# +R-c0QCJ!!!+JcN!6rr`#T-j!%c-`!UM13"*QC!+XcN!4QCJ#X-j!'!+dcN!3!!!# +Z-c-!!2rr!+mc-`!!c-`!X$-c!!#CQ3#a-c-!!'CQ!,)c-`!!-c-!Xc-c!*!&Y!! +!rj!%!,8!!2rrc-`!YJ!!rrqCQ3#h!!$rrfCQ!,J!!2rr-c-!Z3!!rrm!!!#k!!$ +-c2rr!,X!!-b3"!#m!!$-c*QC!,d!!-c-CQB![J!!c-`c-`#r!!$-c!!!!-!!!*Q +Crrm!`3!!QCR-c!$#!!#CN!3!``!!QCPQCJ$%!!#CQ6-c!-8!!*QC!!!!aJ!!CQE +rr`$(!!"QCXc-!-J!!'CQQCN!b3!!CT!%!-S!!'CQ!!!!b`!!CQBc-`$-!!!c-rr +r!-d!!$-cc-`!cJ!!-c1CQ3$2!!!c-fCQ!0!!!$13"!$4!!!c-`!!!0)!N!6rr`$ +6!*!%c-`!e!#3"*QC!08!N!4QCJ$@!*!%-c-!eqlZ!*!&f0hG!*!&fEZl!*!&fUU +U!*!&fiL)!*!&h(Gh!*!&h999!*!&hN4%!*!&hb)L!*!&i"%4!*!&i3!!lZi!!!$ +L!!$Gh3!!!1-!!,Zl!!!!j!!!UUS!!!$P!!#)L!!!!1B!!(Gh!!!!j`!!998!!!$ +S!!"%4!!!!1N!!#)L!!!!kJ!!%4%!!!$V!*!%lZi!l!#3"0hG!1d!N!5lZ`$Z!*! +%UUS!l`#3")L)!2!!N!4hG`$a!*!%998!mJ#3"%4%!2-!N!3L)J$d!*!%%4%!pHk +3"J$fhC!'!2HlN!B!q+U3"J$jL*!'!2ThN!B!qe@3"J$m4*!'!2dLN!B!rK'3"J$ +r!*!(!Z6F!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*#jr`!!!2m!!!$ +r!!!!r`!!!2m!!!$r!!!!r`!!!2m!!!$r!!!!r`!!!2m!N2m!N)`MN#X!N2m!N($ +r!2m!r`$r!2m!)j",!2m!r`$r!2m!r`#3r`#39L13A`#3r`#352m!!!$r)j"a!!$ +r!!!!r`#3r`#30L13I`#3r`#3+[m!r`$r!#13L`$r!2m!r`#3r`#3(L13P`#3r`# +3&2m!!!$r)j#K!!$r!*$r!*!-)j#V!*$r!!$r!2mMN,Ar!2m!N2JMN,d!N2$r!!! +MN-Ar!*$V)j$,!*$Mr`!MN0-!r`#3h#13f3#3e[m!)j$I!*$5)j$P!*$+r`!MN1X +!r`#3a#13m3#3`513pIm!N,XMN2X!N,Ar!#13r`$r!*#a)j$r)j!%!*#Yr`!MN2m +MN!J!N+XMN2mMN!`!N+Ar!#13rb13%!$r!*#K)j$r)j!8!*#I)j$r)j!B!*#F)j$ +r)j!D!*#Brb13rb13([m!N*8MN2mMN#!!N*-MN2mMN#3!N*!MN2mMN#B!N)cr!#1 +3rb13+!$r!*#+)j$r)j!U!*#*)j$r)j!Zr`#3K513rb13-!#3JrmMN2mMN$,r!*# +")j$r)j!d!*#!)j$r)j!fr`#3IL13rb130J#3IL13rb131!#3I#13rb131J#3H[m +MN2mMN$S!N(SMN2mMN$`!N(Ir)j$r)j!qr`#3GL13@2mM)rmMN"2r)j!)rb13"[r +r)rmM)rmMN,F!N(BMN&Rr)b2r)j!Frb13"ImMN!Er)j#i!*"e)j!irrrr)j!(rrr +r)b2r)rrr)b2rrb-M)rrrrb13"2mM)rmMN!6r)rrr)j!%rrrr)j!%rb-Mrb2rrb- +Mrrrr)b-Mrrrr)rmM)rmM)b2rrb13X`#3G5130rmM)b2r)j!&rb-M)rmMrrmM)rr +r)b2r)rmM)b2r)b-Mrb-Mrb13"2rr)b2r)b2r)b-Mrb-M)rmM)rrr)b2r)rmMN!A +r)b-Mrb-Mrb-Mrb-Mrb13XJ#3G5131[rr)j!&rb13"ImM)b2r)b-Mrb13"2rr)b- +Mrb-Mrb13"2mMN!6r)j!%rrmM)b2r)b2r)b-Mrb2r)j!&rb-M)rmM)rmMrb13"2m +MN,%!N(2r)j!jrrmMrb13"[rrrb-Mrb-M)rmM)b2r)b2rrb2r)b-Mrb-Mrb13"2m +MN!6r)b2rrb2r)b-Mrb-Mrb-M)rmMrb13"ImM)b2r)b2r)rq3"L13XJ#3Fb1312m +M)b2r)j!*rb2r)b-Mrb-M)rmMrb-M)rmM)b2r)b2r)j!%rb13"2mMrb-M)rmM)b2 +r)b2r)b-Mrb2r)j!&rb-M)rmM)rmMrb13Y`#3F[mMN$Mr)b2rrb13"ImM)b2r)rm +M)b2r)b-Mrb2r)b2rrb-M)rmM)rmMN!6rrb-Mrb-Mrb-MrrmM)b2r)b2r)b-Mrb2 +r)j!&rb-M)rmM)rmM)rmM)rmMN,2r!*"b)j!jrrmM)rmMN!ArrrmM)rmM)b2r)b- +Mrb-MrrmM)rmM)rmM)rmMN!6r)rrr)j!%rrmM)rmM)rmM)rmM)b2r)b2rrb-M)rm +M)b2r)b2r)b-MrrmMN,3!N(,r)j"Lrb13hJ#3Fb13B[mMN0i!N(,r)j"Lrb13h[m +!N()MN2mMN%)!N(3MN2mMN%!!N(8MN2mMN%!!N(8MN2mMN%!!N(8MN2mMN%!!N(B +MN2mMN$lr!*"f)j$r)j!q!*"i)j$r)j!m!*"k)j$r)j!k!*"krb13rb131J#3I#1 +3rb131!#3IImMN2mMN$Er!*"q)j$r)j!f!*#!)j$r)j!d!*##)j$r)j!b!*#%)j$ +r)j!`!*#')j$r)j!Z!*#)rb13rb13+J#3M#13rb13+!#3MImMN2mMN#Er!*#2)j$ +r)j!N!*#4r`!MN2mMN#!!N*BMN2mMN"i!N*Mr)j$r)j!Dr`#3Qb13rb13'!#3Rb1 +3rb13&!$r!*#K)j$r)j!3!*#Pr`!MN2mMN!`!r`#3U513rb13#!#3Vb13rb13"!$ +r!*#a)j$r!*#er`!MN2X!r`#3ZL13p3#3`2mMN2%!N-BMN1X!N-Rr!2mMN1Ar!2m +!N-mMN0m!N0Ir)j$C!!$r!*$E)j$6!*$Kr`$r!#13b`$r!2m!N1JMN-8!N2$r!!! +MN,hr!*$k)j#e!*$r!2m!r`!MN+X!r`$r!*$r!*!,)j#K!*$r!*!Ar`!MN*F!!!$ +r!*$r!*!J)j#,!*$r!*!Ur`$r!2m!)j"r!2m!r`$r!*$r!*!h)j"a!*$r!*"(r`! +!!2m!)j"I!!!!r`!!!2m!N2m!N&JMN%X!N2m!N'Vr!2m!r`$r!2m!r`$r!2m!)j! +V!2m!r`$r!2m!r`$r!2m!r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3TAB!!!"f!!! +!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!*$r!*#0)j!S!*$r!*# +-GL13+!#3$hB!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!" +f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ#3r`#3,51 +3+!#3%&@36`#3r`#3,ABMN#J!N!pf9C"2GJ#3r`#3,513+!#3%&@36`#3r`#3,AB +MN#J!N!pf9C"2GJ#3&RB!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ! +!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ! +!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!*#P)j!S!*!39C"2!*!B6*" +`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!#3T513+!#3%&@36`#3'%b3F!#3T(BMN#J +!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB +!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*"`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!# +3T513+!#3%&@36`#3'%b3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N"" +9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*" +`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!#3T513+!#3%&@36`#3'%b3F!#3T(BMN#J +!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB +!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*"`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!# +3T513+!#3%&@36`#3'%b3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N"" +9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*" +`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!#3T513+!#3%&@36`#3'%b3F!#3T(BMN#J +!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N""9N%m!N"K-N(!!N+4f)j!S!*!2GP@36hB +!N"Cf6*"`!*#P)j!S!*!39C"2!*!B6*"`!*#NGL13+!#3$hC9N%pf!*!@GNb3F!# +3T513+!#3%&@36`#3'%b3F!#3T(BMN#J!N!pf9C"2GJ#3&RC-N(!!N+8MN#J!N"" +9N%m!N"K-N(!!N+4f!(B!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ"f!(B!GJ" +f!(B!GJ#3$hC9N%pf!*!@GNb3F!#3r`#348b3F!#3r`#34(C-N(!!N2m!N%9-N(! +!N2m!N%4f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ! +!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ! +!!(B!!!"f!!!!GJ!!!(B!!!"f!!!!GJ#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`#3r`# +3r`#3A846493!!!"8!!$rr`!!!#i!5!!"!!!!!J!!!%X!!!$%m`"rrrrrIrrrr`" +65'J!!!!"!*!4!3!"!*!&!5qL!*!-!9S!!!"J!!,rr`!!!#S!!!!#!*!4!3!"!!! +!@"0),k)!N!`"@J#3%3%!!3#3"3%!@J#3$!%'!*!84Nj863#3"%099&-!N!4%8e9 +0!!!!*J#3$`i08'9bCQpbE@%J9A0PFJ#3#%K%6NN!!!!'!!"69&P-!!!"%!!(rrm +!!!!F!%!!!908@8`!@"A8!J%!@"@`!*!&@"A3!&J9a!"B&GJ!@"B3!&J9Y!"B&E` +!N!J"Y3!!rj!%!!!!"`!#rrm!!!!*!*!%"!S!!Iq3"!#3#[rr!!!!!J!"!!)%!J! +!rrm!!!!#!!%!!3!"!!(rr`!!!!%!!J!%"!S!!Irr!!!!!`!"!!%!!J!#rrm!!!! +"!!-!"33+!!(rr`!!!!%!!3!"!!%!!rrr!!!!!3!%!!B%#J!"rrm!!!!%!!%!!3! +#!!6rr`!!!!%!"3!(!!%!!2rr!!!!"3!"!!-!!Iq3"!!!!!%!"J!)"!N!!Irr!!! +!!3!"!!3!!Irr!!!!1J!(rrm!!!!'!!3!!8K"8dL3!%9cP3!"TFLabJ!!YY+ccJ! +%`0+c``!#b0ApcJ!$!"FPH!!'!3kQA!!&!!!!MJ!'rrm!!!!8!!S!!N0)39)!@"A +)!($rr`!!!!%!!Irr!*!)$!%!N!8#!*!&!Irr!*!%$!(rr`!!!!%!!!!&!!(rqJ! +"!!!-!Irr!!!!!3!!!"B!!IrV!!!!!3i"rrm!!!!"!!!!)J!"rpm!!!!#$!(rr`! +!!!%!!!!"!!(rrJ!#!!!-!3!!!#i!"Irr!!!!"J!%!!&)390)!!)"#`!"!!)"$`! +%!!)"%!!$!!-"#`!#!!3"#`!&!!!!2J!#rrm!!!!8!!S!!N0&6%`!@"A-!!$rr`! +!!!%Ir`!!!!)!N!Mrr`!!!!B!!"rr!!)!N!XF!!,rr`!!!!B!"!!"5%&65!!#(rm +!!5!"!*!(MJ!&!!)!!3!B!!S!!NG58%J!@"B8!!$rr`!!!!%"r`!!!3!"!!!#!!) +!N!Err`!!!!3!!!(r!3!"!!!#!!)!N!ErN!B!"!(l!3!"!3!#!!)!N!Err`!!!!% +!"J(j!3#"@!!#!!)!N!Err`!!!!%!%3&Z!!!"!!!#!!%!N!NS!!6rr`!!!!B!"!! +"5%&65!!6!Qm!"!%#!`%!!3%)Je-!!`-"!3)!N!3"@J!$rrm!!!"X!!S!!P*96&) +!@"@i!!Vrr`!!!!%"r`#3C2rr!!!!"!!!!Im!N',rr`!!!!)!!J(p!*!%3!#3B#) +!!rrr!!!!"J!%!!&)390)!!!"r`!"!Im!N!4!!J(p!!)!!!!L!!N!!3!#!!)!"!! +#6%Y98!!!!!-!!Irr!!)!!`!%!!8!"J!!!-3!"Irr!!!!*!!%!!*138e&!!!%b,( ++S3#3(J)+b,(+SFV8bq1al3#3'!3%dV2$[!#3(J8%eIh1a!#3(JB%dV21XJ#3,0` +!!rrr!!!!4!!%!!*'6P40!!!!!JG$D'PMB@G[!*!j!`!#"NGPEQ9fB3#31K8!!JP +)C@afCA4TBf%!N$C&9%*-!!!!3%C19%d!![*X3e988`!#mR4%8e90!!,bI%K%6NN +!![+U8e4C6!!#mV4&9%*-!!,j62rqrIclq[Rim2(bmr6ep[H3!1m!!!%!!!!"5!! +!!%J!!!"D3Np#6d0A6&!$!*!A#R"KD@jd0#jMGfX!!J!!!%0A8&4#6d*2!*!+3eG +39%*23Nm!N"M2Xq2!!*!'!D)!N!d[*3d*25(P`D!)!N"ih*3d*28&*&4J- +!N"if*3d*2C%0[E!%!N"J18'9bCQpbE@%J9A0PFJ#3"#,2Xq2!!!"35808!qJ +!!Fqcim""GA4S9%9B9!2U!$3!N!F-#d0XBA*TFeG[FQYc!!!"!!!!!8J!!!")!!! +!@J"B&*3Ai!!!!"`!@J!#9%9B9!!!!"T`EQpd!!!!*P088L!!!!!b!qVrr`#3#[r +r!!!!%J"B%Ebrp2rr!!!!1!"B%H3S2J: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_5.0.cwk b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_5.0.cwk new file mode 100644 index 000000000..84dae0471 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_5.0.cwk differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_6.0.cwk b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_6.0.cwk new file mode 100644 index 000000000..371ed1410 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/ClarisWorks_6.0.cwk differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_10 b/writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_10 new file mode 100644 index 000000000..b90bfbdc9 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_10 differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_3_win.rif b/writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_3_win.rif new file mode 100644 index 000000000..be59998c0 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/CorelPainter_3_win.rif differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.0.hqx new file mode 100644 index 000000000..e94be3585 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.0.hqx @@ -0,0 +1,133 @@ +(This file must be converted with BinHex 4.0) +:#f0bD@0VCA4%FQ&h!%0,4&4$8N4A!3!!!#*!!*!%a$J!!JBb,c8[1$F!N!Are2r +m!DJ#3!!2!!!!5!")!*!%![!#32rarqi$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y +!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3% +!!3!"!@N!!3%!!!%!!!!"!!!"!3'!!!(rr`)!!!#K)J!!!!J!!!!)!!!!#!!!!!J +!!!%b!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"3-!N"-)!!J!!J!#!*!G*!!!P0!!!3" +UcMJ!DXeJ!'V0A2rr!'V0H+T9UP@U9DT9!!!!2!!!PD$jN!!!!)+!!*!%!H!#J!# +3#8J!!!")!*!&#!!"!!J!N!9Uc@3!N!6qpJ!!!#!!!*6-!*!E%!!!P-J!N!X-!!# +8a!!!rri!!!,X!!#8`!!+reIrb3(k!JRqpJ!!!YK`3#$C8d"ZqN(Zr[BJ#&+!,`! +3,[lf!N!!rdM!,`![,IQ)UGj54`a(!'4[!2p3$'hrrrQ1Ea![,IQ)UGJ!DXh8!*! +%!3#3"JB!!2rd!!$rmB!!!!`!!!!1J!!!!3!!!@3!)3#3"2!U!!i!)4Zj!*!&C"P +,!*!*)3!!!"3!!!"N!!S!N!XK!"3!!*9`!*!%!H3!!!'UJ!#3#JS!!!!Y!%J!N!m +J!!$rTJ!!!"d!!!!B!!!"f!!!!C`!!!(J!S!"&3!!!"3!!*9`!!`!!2raJ!!!$!! +!!!k!!2rd!!!!$S!!rr3!!2raJ!!!DXi-!'V1-!#3"`B!!2re!!$rlS!!!!X!!!! +4J!!!!3!!!@3!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)8M!JH`!'!"N!&i!N!XK2`D +TC5mY!*!%!GJ!!!&UJ!#3#Y!!!!!Y!%J!N!mJ,`crTJ!!!#-!!!!@!!!"c3!!!9N +!!%KS!!J[$+R63UG#Tbm-!!X!!2rZJ!!!#`!!!"'!!2re!!!!%B!!rr8!!2rZJ!! +!DXhN!'V0e!#3"`B!!2rcJ!$rp`!!!!b!!!!*!!!!!3!!!@3!)3#3"2!U!!i!)4Z +j!*!&C"P,!*!*)3#3"f3!N!dK!*!+!F5!!!%f!*!2,3")!*!2)!!!rkB!!!!5!!! +!'3!!!EJ!!!%Y!*!4$)!!rrF!!!!-J!!!#3!!rr1!!!!*!!$rmi!!rrF!!!"UcL! +!DXi-!!!!!3!!!!8!!2rfJ!$rk3!!!!Q!!!!A!!!!!3!!!@3!)3#3"2!U!!i!)4Z +j!*!&C"P,!*!*)3%j!3J"13"N!$N!N!XK!3S"1J%0!*!%!FH!!!$p!*!,1`!!!#d +!5!#3$b"rr`#&!#J!+J"R!'Prr`#'!#F!+!"T!'Trr`#)!#B!*`"U!'[rpS!!rqN +!!2rfJ!!!&`!!!!Q!!!!A!!!!#B!!rqN!!!"UcQ!!DXhN!!!!!3!!!!3!!2riJ!$ +rl`!!!!H!!!!4!!!!!3!!!@3!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)3!!!H!#J!" +N!*!0)3(J!S!!F`#3"!($J!!!Z3#3$bd!5!#3$b!!#J!!!!S!N!3"i!+!!%F!!!! +8!!#9F!!+!*!%!H!#J!"(rrL!!2r[!!$rq)!!!"%!!!!(J!!!%3!!!!H!!2r[!!! +!DXfX!'V1)!!!!!%!!!!$!!$rp!!!rr!!!!!-!!!!%!!!!!%!!!&N!#%!N!6`+J! +1!#%EZ3#3"@3C5`#3#5%!!*9F!!S!C!#3$5'9F!!+!*!'!F-!!!#(!*!2,3")!*! +2)!+!!*!&&!!!PA!!#J#3"!(J!S!!N!88!!#9F!!+!!$rp!!!rr!!!2rd!!!!%!! +!!!`!!!!3!!!!$!!!rr!!!!"UcNJ!DXjJ!*!(!J!!rrm!!2rQJ!!!!3!!!"Q!!!! +"!!!"C!!K!*!%m#S!$J!K'lN!N!9N'8X!N!NK!4B"$J%@!'3!&`#3#b%"%!%B!3B +!N!3"a!!!!%#!!*!+'3!!!#d!5!#3$a!"'`%#!4X"!`%E!4-"'`%8!4`"!3%F!3) +"(!%8!4`"&3%G!3!!!3!!rqD!!2rr!!!!'B!!!'V0d!"UcD`!N!F#!!$rrJ!!rqX +!!!!#!!!!&3!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!N!GN!*!0)3% +E!5m!r3#3"@d!!!&Z!*!,-!!!!#d!5!#3$a!"-J%!!6)"!3%b!48"-J%@!6-"!3% +c!3)"-`%8!6-"&3%d!3,rrJ!!rqX!!!!#!!!!&3!!!'V1&!"UcNJ!N!F#!!$rqJ! +!rqJ!!!!'!!!!'!!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%")!$q!5! +!C!!J!*!,)3%D!5%"'`#3"8!!!!&`!*!,)`!!!#d!5!#3$a!"*!%H!58!p`%P!2J +"*3%H!58"(`%Q!2B"*J$h!5B"(`%Q!5!!"J!!rqJ!!2rk!!!!'!!!!'V1Q!"UcG! +!N!F#!!$rpi!!rpi!!!!)J!!!)J!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`# +3#5%!N!GN!*!0)3#3#b1!!!&Q!*!2,3")!*!2%!#3$J5-!5N"J!%T!Ad"+3&q!5N +"IJ%T!B!!#)!!rpi!!2rhJ!!!)J!!!'V13!"UcK3!N!F*!!(re)!!rp-!!!!VJ!! +!,3!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!B`"VIrm!C!!k!*!,)3! +k!(!!F`)!!!!"9)!!!E)!N!Yc!!!!,3")!*!2U!"V!("rr`&@!$m!4`"M!'Yrr`& +A!%F!BhrrIrm!!!!J!6)"&J!6J!$re3!!!"D!!2r9!!!!(i!!rp8!!!!UJ!$reJ! +!!#Z!!2rG!!!!)i!!rqm!!!!FJ!$rp`!!rrk!!!!E!!$rjB!!!#S!!2r9J!!!,3! +!rp5!!!!I!!$reB!!!!%!!2rCJ!$rl3!!rqD!!2rN!!$rli!!rpX!!2rdJ!$rd`! +!rrL!!2rA!!!!!i!!rq!!!!!2J!$rjJ!!!!L!!2rM!!$rmi!!rpB!!!"UcQ`!DXk +B!*!(#3!!rq'!!2rp!!!!(S!!!!-!!!!"!!!"C!!K!*!%m#S!$J!K'lN!N!9N'8X +!N!NK!5`"(3%Y!'3!,3#3#b%!q`%Z!2d!N!3"ES!!!@i!N!X[!!!!,3")!*!2+!% +a!3!!!!)S!6%"'!%b!3!"-J%"!6)"&3%b!4B"-`%"!6-"![rKJ!$rr3!!rq1!!2r +p!!!!#B!!rrd!!!!GJ!!!!3!!!"k!!!!$!!!!DXiX!'V13!#3"``!!2rRJ!$rl3! +!!"L!!!!6!!!!!3!!!@3!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)3!"!!%!!3"N!)F +!N!XK!Cd"L3!"!*!&m)!!!E3!N!mY!%J!N!mJ!*!P')!!rrN!!2reJ!!!%`!!rqH +!!2rY!!!!#)!!rrJ!!!"UcT`!DXjX!!!!!3!!!!S!!2rXJ!$ri)!!!"1!!!!IJ!! +!!3!!!@3!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)3#3"f3!N!dK!2N"*!%G!*!&X)! +!!DL!!*!1,3")!*!2)!!&!!!"I`'!Irm"(!&m!Ad"J!'"Irm"(3&k!A`"J3'$Irm +"([rXJ!$ri)!!rqb!!!!IJ!!!%i!!!"q!!!!6J!$ri)!!!'V2T!"UcL`!N!F,!!$ +rh)!!rq@!!!!MJ!!!'S!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!!!! +8!!!!C!!+!*!,)3!8!!#9`!#3"9b!!!'JJ!#3#JS!!!!Y!%J!N!mJ!!!"D!!+!*! +&&!!!PF!!#S!"J!&rrhrr!*!&&!!!PJ6rh)!!rq@!!2rFJ!!!'S!!!#1!!!!DJ!! +!)i!!rq@!!!"UcS!!DXkF!!!!!3!!!!8!!2rmJ!$rl3!!!!1!!!!6!!!!!3!!!@3 +!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)3+!!*!&C!#3$5%!N!88!*!%!9#!!!%i!*! +2,3")!*!2)!!+J!'!!ArrIrm!N!9%!*!8rrb!!2rY!!$rr)!!!"-!!!!$J!!!%`! +!!!1!!2rY!!!!DXjd!'V2T!!!!!%!!!!&!!$rq!!!rq'!!!!)!!!!(S!!!!%!!!& +N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!N!GN!*!0)3#3"!(J!*!%!93!!!$bJ!# +3#S!!!!!Y!%J!N!mJ!!!!&!!!PI!!#J#3"!(J!S!!N!88!!#9m!!+!*!%!H$rq!! +!rq'!!2ri!!!!(S!!!!J!!!!HJ!!!#!!!rq'!!!"Ucf!!DXk!!*!($J!!rpi!!2r +G!!!!)J!!!#-!!!!"!!!"C!!K!3S"1`%0!$X!)3%l!3X"1`"N'8X!N!NK!!%"L3) +*!'3!N!dK!BN##3&+!*!%!6+!!!#aJ!#3$Ld!5!#3%`)!#J!"!!%"L3)*!D8!!!! +8!'V2#!"Uc[!!!3'*!JN"T3"Uc[!!N!3"!!!"!!!!"3!!rrZ!!2rTJ!!!")!!!"D +!!!!"!!!"C!!K!*!%m#S!$J!K'lN!N!9N'8X!N!NK!!!!&!!!!'3!#J#3#b%!&!! +!PI!!N!8G!!$rp!#3#`S!!!!Y!%J!N!mJ!!!"i!+!!DB!!!!8!!#9m!!+!*!%!H! +#J!!m!!!!&!!!PI$rqi!!rqQ!!2rlJ!!!&S!!!!5!!!!@J!!!")!!rqQ!!*!'DXm +)!3!!!3!!!!3!!2r[J!$rhB!!!"#!!!!LJ!!!!3!!!@3!)3#3"2!U!!i!)4Zj!*! +&C"P,!*!*)3#3"f3!!`#3#b%!!!!"J!#3"Ir[!*!6,3")!*!2)!!+!!!!#J#3$Mm +!N!rrli!!rpf!!2r[J!!!)S!!!"#!!!!LJ!!!%)!!rpf!!*!*!3#3'J%!!!&N!#% +!N!NK!*!(C"P,!*!*)3#3"f3!N!dK!*!EE3!!!#d!5!#3%2riU+d3(fFS-#i!#*! +!E[ri)'hjK#"35-#"k!!B,`"#CbmYqA`!DXp8!'V1G!!!!!%!!!!&!!$rqi!!rq' +!!!!%J!!!(S!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!!!!8!!!!C!! ++!*!,)3!8!!#9m!#3"!&4J!!!9)!!N!S+!!!!,3")!*!2)!!!!H!#J!%L!!!!&!! +!PI!!#J#3"!(J!S!"@!!!!"3!!*A`rrZ!!2rKJ!$rqi!!!"k!!!!%J!!!(S!!!!5 +!!2rKJ!!!DXlS!'V2B!!!!!%!!!!(!!$rq!!!rr8!!!!)!!!!#`!!!!%!!!&N!#% +!N!6`+J!1!#%EZ3#3"@3C5`#3#5'!+J#!J%m!C!#3$5%!DMQ)!!S!N!3"(J!!!DF +!N!Ym!!!!,3")!*!2)%0)!PN!N!F+!!!!$!!+FN`!!!!+!!!!$!!+FN3!!!L!rrJ +!N!X,!!!!#!#3#[re!!!!DXkX!'V29!!!!!%!!!!(!!$rq)!!rr8!!!!(J!!!#`! +!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!)#KY!!-!C!#q!*!,)@ld3QF +r2!#3"!%KJ!!"IJ#3#i`!!!!Y!%J!N!mJqPK2l`!1B!!,PNUYmKTQ8N*R5'lqM%k +Y0'*FMdKi!$C1V3@DrrL!!*!+#`!!!!H!!*!*rr8!!!"UcZ3!DXlS!!!!!3!!!!F +!!2rd!!$rli!!!!`!!!!3J!!!!3!!!@3!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)3% +(!3J"$`"N!2m!N!XK!6S"#3%+!*!%!5)!!!&(J!#3#JS!!!!Y!%J!N!mJ!!!"i!+ +!!*!&&!!!PI!!#J#3"!(J!S!!N!88!!#9m2rd!*!,%)!!!!`!N!Vrli!!!'V1[!" +UcU`!!!!"!!!!"`!!rq`!!2rTJ!!!&!!!!"D!!!!"!!!"C!!K!*!%m#S!$J!K'lN +!N!9N'8X!N!NK!*!(C!#3$5%!N!S"*`!!!3U!!*!1,3")!*!2)!#3*2rX!*!,&S! +!!"3!N!VrkB!!!'V2K!"UcZ3!!!!"!!!!"!!!rqq!!2rGJ!!!%)!!!#+!!!!"!!! +"C!!K!*!%m#S!$J!K'lN!N!9N'8X!N!NK!*!(C!#3$5%!N!S"'S!!!%f!!*!1,3" +)!*!2)!!+!!!!#J#3([r[J!$rhB!!rqq!!!!LJ!!!%)!!!#+!!!!3J!$rhB!!!'V +1P!"UcV`!!!!"!!!!"!!!rr#!!2rFJ!!!$i!!!#1!!!!"!!!"C!!K!*!%m#S!$J! +K'lN!N!9N'8X!N!NK1A`!TJ"U!'3!j`#3#b%!#%0)!PN!N!AUJ!!"FS!!N!iY!%J +!N!mJ!!S!!!!+!!"rr`'D!M)#3(rr!DJ!H!)bIrprr`!!!"3!!*D3!2r`J!$rh)! +!rr#!!!!MJ!!!$i!!!#1!!!!2J!$rh)!!!'V1b!"Uci3!N!F1!!$r`J!!rj1!!!! +q!!!!E)!!!!%!!!&N!#%!N!NK!*!(C"P,!*!*)3#3"f3!N!dK!*!,[)!!!2F!N!m +Y!%J!N"-$!*!4DXlX!'V2)!#3#@V2+!#3"!%!!!%!!!!$!!$rl3!!rpm!!!!6!!! +!)3!!!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"@3C5`#3#5%!N!GN!*!0)3#3#bL!!!! +B!*!2,3")!*!2)!#3*2rY!!$rh`!!rqd!!!!K!!!!%`!!!#%!!!!6!!$rh`!!!'V +2)!"UcZ`"!!!"!!!!!`!!rqb!!2rB!!!!%i!!!#J!!!!"!!!"C!!K!*!%m#S!$J! +K'lN!N!9N'8X!N!NK!*!(C!#3$5%!N!XU!!$r[!#3$bd!5!#3$b!!N#6rl)!!rpJ +!!2rXJ!!!+!!!!"1!!!!S!!!!%i!!rpJ!N!GUcbJ"!!!"!!!!!`!!rpm!!2r'!!! +!)3!!!$S!!!!"!!!"C!!K!*!%m#S!$J!K'lN!N!9N'8X!N!NK!!!!&!!!!'3!#J# +3#b%!&!!!PY`!N!6rii!!!$)!N!X+!!!!,3")!*!2)!!!!H!#J!#3"43!!*EF!!S +!N!3"i!+!!*!&&!!!PYcrh`!!rmB!!2rI!!!!1J!!!#%!!!!k!!!!)3!!rmB!N!S +"!*!D!3!!!@3!)3#3#5%!N!GN'8X!N!NK!*!(C!#3$5%!N"YY!!!!,3")!*!3rrL +SV4!ICbJ`,J!)N!"ZrrJJEIQ%)&")`)(S!"J[!%*R,bhjI!"UcfJ!DXk8!!!!!3! +!!!-!!2rZ!!$rei!!!")!!!!SJ!!!!3c0"'3!)3#3"2!U"3i"94Zj!*!&C"P,!*! +*)3#3"f3!N!dK!*!%!H!!N!AM!!!!6B!!N!U!!!!!,3")!*!2)!!!!"3!!*EF!!S +!N!3"i!+!!#`!!!!8!!#@h!!+!*!%!H$rlJ!!rpH!!2rZ!!!!+)!!!")!!!!SJ!! +!%J!!rpH!!!"Ucf3!DXl)!!!!!3!!!!-!!2rL!!$rd)!!!"i!!!![J!!!!6-c!9% +!)3#3"2!U!!i!)4Zj!*!&C"P,!*!*)3#3"f3!N!dK!*!,23!!!2b!!*!1,3")!*! +2)!#3*2rL!!$rd)!!rq)!!!![J!!!(J!!!#q!!!!H!!$rd)!!!'V21!"UcfJ!!!! +"!!!!"!!!rqJ!!2rG!!!!'!!!!#-!!!!"-c3$B!&9!*!%m#TI$J&9'lN!N!9N'8X +!N!NK!!!!-!!!!'3!!3#3#b%!9`"q!#m!N!@E!!!!5!#3$bd!5!#3$b!!#J!!!!S +!N"lrk!!!rpd!!2rS!!!!)`!!!"J!!!!M!!!!'!!!rpd!!!"UciJ!DXpN!!!!!3! +!!!%!!2rH!!$r`J!!!#)!!!!q!!!!!3!!!6)!)3#3"2!UC!i!)4Zj!*!&C"P,!*! +*)3!!!"3!!!"N!!S!N!XK!"3!!*Dm!*!&V!!!!-3!N!X+!!!!,3")!*!2)!!!!#B +!!!!H!!!!&!!!PV`!#J#3"!(J!S!!N!88!!#@[2rH!!$r`J!!rpi!!!!q!!!!)J! +!!$i!!!!L!!$r`J!!!"aTE##1G'&TG#"eEQ8JCQpTFh0eF'9bFf0bDA"d!!B!N!8 +9!!3!H!#3"33!N!88!!#@[!!+!*!%!H!#J!#3"@V21!!!!!%!!!!)!!$rhS!5rmB +!-`!KIqi!1Ir0!!%!!!&N!#%!N!6`+J!1!#%EZ3#3"!&I'%X!N!R0rpJ"Q!)B!'3 +!N!dK!@Crr`'C!*!&3(r[!'hrc3#3#Im!!!!Y!%J!N!mJ!!3#4RrrIrm!!!!%!*! +%J!!!&!!!Pk3,9@jdDA4XC@3J)c(rhS!5rmB!-rrHJ")!1Ir0!#&rlJ!jrmd!)Ar +ZrmB!-`#3#!%!N"S"!!!"C!!K!*!*)3#3"f3C5`#3#5%!N!GN!*!0)3#3'fd!!!! +Y!%J!N"$rq+LY%"pR+$!Z!!L3!'lrq#"YqB3J8%M!JHJ!'#m!3QF[,IPm'e!!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.1.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.1.hqx new file mode 100644 index 000000000..fc6c016fa --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/CricketDraw_1.1.hqx @@ -0,0 +1,72 @@ +(This file must be converted with BinHex 4.0) +:!Q0N!%0,4&4$8N4A!3!!!"-B!*!%lA`!"!Fh,c)b,cJi!*!%rp6rr!'X!M`!$`! +!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!! +"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!)N!33)!!!% +!!!!"!!!"!!%#!!$rr`!K!*!(#!!!!!J!!!!)!!!!#!!!!%J!!3!!!@3!)3#3"`% +!)3#3"`-!N!9)!!!!5!#3#3J!#!!#!!)!N!X%%3!!!!44!*!%N3#3"&%!!!!%83! +!!!%4!!!!"&%!N!44!!!!5+*+F"!!!!1F!!!!"mi!!!!$MJ#3")i!!!!(MJ!!!!1 +1!!!!!3i!!!!$MJ!!!!11!!!!ja`%!*"S)!#3"#!!N!3J!*!%)!#3"#!!N!3J!*! +%)!#3"#!!N!3J!*!%)!#3"#!!)!#3"#!!!!"Q#d3!N!6ri)!!rmi!!!!IJ!!!-J! +!!3J!!!%6!!!"4`!!!AF!N!m$!!!!%!!"!!!"C!!K!*!(!3!K!*!'!@3C5`!+!!! +!#!!!!#%!N!GN!)F!N!XK!*!+!5H!!!&&!*!,L3!!!#d!2!#3"b!!LJ'C!)X"M3# +,!Bi!L`'A!)X"Q!#-!Bi!M!'2!)`"P[rJJ!$rcJ!!rq#!!!!b!!!!(i!!!$)!!!! +IJ!$rcJ!!!'B-)!"Q#FMrjS!!rpf!!!!CJ!!!)S!!!3J!!!#T!!!"1`!!!1i!N!m +$!!!!%J!"!!!"C!!K!*!(!3!K!*!(C"P,!*!*)3#3"J0F#!!!Y!!!J!$rq)!!!)N +!N!S")B!!!-Z!!*!1,3!m!*!()!#3%fBB#!#3#[rQJ!$rhB!!rqD!!!!LJ!!!'B! +!!#+!!!!CJ!$rhB!!!'B,k!"Q#d6rl3!!rq8!!!!6!!!!'`!!!,8!!!&M!!!!f`! +!!CN!N!m-!*!&!3!!!@3!)3#3"`%!)3#3"f3C5`#3#5%!N!GN!)!!N!XK!*!,b!! +!!Ai!N!S#!*!%,3!m!*!()!#3')!!!43!!!#3!!!5!!$rkJ!!rrd!!2rP!!$rl3! +!!!3!!!!6!!!!'`!!!'B,i!"Q$#$rmB!!rr-!!!!1J!!!$3!!!,B!!!%Z!!!!d`! +!!8J!N!m,!*!&!3!!!@3!)3#3"`%!)3#3"f3C5`#3#5%!N!GN!*!0)3#3#m5!!!% +l!*!2,3!m!*!()!!!!@J!#J!m!!#(!!!X!"N!!`(D!N)!'3!$!N&rr`!Drr'!!2r +c!!$rmB!!!!d!!!!1J!!!$3!!!!k!!2rc!!!!CJ[B!'B,k2ra!!$rkS!!!!m!!!! +9J!!!Y3!!!1S!!!$6!!!"&3#3$`S!!!!3!!%!!!&N!#%!N!F"!#%!N!GN'8X!N!N +K!*!(C!!i!*!,)3#3#m3!!!$rJ!#3#L!!!!!Y!$`!N!FJ!!8!!+!U-$J#)'B5,b` +!(UQU-$J+B'B'2b`!#+QCB4$rm3!!rqU!!2ra!!!!&B!!!!m!!!!9J!!!$`!!rqU +!!!"Q#L`!CJ[Jrq8!!2rB!!!!'`!!!#J!!!#p!!!!M!!!!2-!!!$F!*!2#3#3"3% +!!!&N!#%!N!F"!#%!N!GN'8X!N!NK!*!(C!#3$5%!N![B!!!!Y!#3$bd!2!#3"lJ +!#J#3"!(J!S!"M!!!!"3!!)AJ!!S!N!3"i!+!!)X!"!!!rpN!!!!%!!$rf!!!!!) +!!2rB!!$rq3!!rqS!!2rc!!!!#!!!rrS!!!!G!!!!$3!!!#F!!!!@!!!!+!!!!"F +!!!!Q!!!!&J!!!#B!!!!-!!!!*`!!rq`!!!!8!!$rj3!!!!8!!2rq!!!!#!!!!!N +!!!!*!!!!#`!!!!J!!!!1!!$rq!!!!"!!!2re!!!!&`!!rr8!!!!D!!$rp3!!!"X +!!2rf!!!!'J!!rrB!!!!A!!$rp3!!!'B,d!"Q#pMrjS!!rq!!!!!CJ!!!)!!!!-` +!!!!c!!!!r`!!!(-!N!m)!*!&!3!!!@3!)3#3"`%!)3#3"f3C5`#3#5%!N!GN!(m +!N!XK!*!,jB!!!&-!N!Z#!!!!,3!m!*!(+!#$!BS!J`',!)-"QJ#$!CX!K!'*!)3 +"LJ#%!CX!K!'Frr#!!2rX!!!!'B!!rq!!!!!3J!!!#J!!rqD!!!!J!!$rji!!!!S +!!!"Q$13!CJSXrqD!!2rJ!!!!'B!!!#!!!!$%!!!!+`!!!2F!!!"V!*!2#!#3"3% +!!!&N!#%!N!F"!#%!N!GN'8X!N!NK!*!(C!"r!*!,)3#3#pf!!!",!*!,JJ!!!#d +!2!#3"bJ!J`'+!)-"L`#$!CS!J`'E!)3"L3#%!BS!K!'E!)3"R2r`J!$rl!!!!"Q +!!2rJ!!!!%)!!!!S!!2rQJ!!!)!!!rqH!!!!+!!!!CJ[)!'B,d2re!!$rpJ!!!!X +!!!!+!!!!H`!!!BJ!!!#4!!!"R!#3$`F!!!!3!!%!!!&N!#%!N!F"!#%!N!GN'8X +!N!NK!*!(C!#0!*!,)3#3#iB!!!'5!*!,N!!!!!!Y!$`!N!FJ!*%"&3#4!5d!N3% +Z!*)"&3#5!4J!NJ%V!*)",3#6!4Mrp3#3#`S!!!!,!*!+rrB!!!"Q#JJ!CJcNrr- +!!2r`J!!!$3!!!!q!!!"l!!!"63!!!*8!!!&X!*!2"J!!!!J!!3!!!@3!)3#3"`% +!)3#3"f3C5`#3#5%!N!GN!(d!N!XK!*!,L!!!!9b!!*!+J!!!!#d!2!#3"b!!L!" +D!!!!'J!!!"m!!!#9!!!"63!!!3i!L`%2!)X"-rrc!!$rm)!!rr-!!!!2J!!!$3! +!!!q!!!!0!!$rm)!!!'B-L!"Q#mMrkpLmrl'km`!8*d3!6N8-!(4B[!#BGHF!R+G +%!68!N!m1!*!&!3!!!@3!)3#3#5%!N!GN'8X!N!NK!*!(C!"f!*!,)3#3#iL!!!$ +QZ[3!N!Pj!!!!,3!m!*!,!`"k!0-!I!$k!(`!q`"p!0%!CJbB!'B-G!#3!!$5!'B +-T!#3"2r`J!$rki!!!!q!!!!8J!$rl)!!!#9&$!!,J!!!6N8-!*!0"3!!!")!!3! +!!@3!)3#3"`%!)3#3"f3C5`#3#5%!N!GN!*!0)3#3#[rm!!!!1F8-!*!0,3!m!*! +()!!+!*!%!H!#J)5%!!!!&!!!KH!!#J#3"!(J!S!r1Ir`J!$rki!!rr#!!!!8J!! +!$i!!!"5!!!!2J!$rki!!!'B-G!"Q$*MrlS!!rqX!!!!4J!!!&3!!rqb!!2rU43` +!$i!!!"4&$!#3$33!!!!5!!%!!!&N!#%!N!F"!#%!N!GN'8X!N!NK!*!(C!#3$5% +!N!VrrJ!!rrp&$!#3$5d!2!#3"b!!#J!!!!S!!!!+J!'!!ArrIrm!N!88!!#&i!! ++J!(rlS!!rqX!!2rZJ!!!&3!!!"'!!!!9!!!!%B!!rqX!N!GQ$+6rm)!!rr-!!!! +2J!!!$3!!rq[B[2qaZ[-!&#G%rpM2*3#3$3-!!!!5!!%!!!&N!#%!N!CF!3"&!*! +(C"P,!*!*)3#3"f3!N!dK!*!1rm9&$2rG!*!,,3!m!*!()!#3)2r`J!$rm`!!rr# +!!!!0!!!!$i!!!!d!!!!2J!$rm`#31`)!!3!!!@3!)3#3"m`!)3#3"f3C5`#3#5% +!N!GN!'i!N!XK!*!Ef!!!!#d!2!#3##"I8%p1d%j@!!!JEJ!)%""Q%$mm!!C1V3@ ++)'i!#"#m!'B-!!"Q#JMrr)!!rpD!!!!$J!!!+B!!!*J!!!!N!!!!R`!!!(F!N!m +#!*!&!3!!!@3!)3#3"`%!)3#3"f3C5`#3#5%!N!GN!*!0)3#3"J%!N!5EJ!!!6B! +!N!iY!$`!N!F3!*!K!i!!rpD!!2rmJ!!!+B!!!'B+Y!"Q$)MrjS!!rm@!!!!CJ!! +!1S!!!$8!!!"3!!!!D!!!!-8!N!m"!!!!%!!"!!!"-J!K!*!'C!%!)3#3"f3C5`# +3#5%!N!GN!*!0)3#3#dk!!!#+J!#3#J%!!!!Y!$`!N!FJ!!!!'J!!!"l$QJ!"!*! +2-!!!KD6rjS!!rm@!!2rQJ!!!1S!!!"Q!!!!kJ!!!'B!!rm@!!!!36'8JG'9iG'8 +JCA0d)'PMD3!'!!!-!!!9!!3!FJ#3"33!N!3"V!)m!!%!!!!`!!#'E!!X!*!&CJ` +!rqD!!2rJ!!!!'B!!!#!!!!$8!!!!1`!!!3F!!!"l!*!2#!#3"3%!!!&N!#%!N!F +"!#%!N!GN'8X!N!NK!*!(C!"r!*!,)3#3#qf!!!"E!*!,JJ!!!#d!2!#3"bJ!J`' ++!)-"L`#$!CS!J`'E!)3"L3#%!BS!K!'E!)3"R2r`J!$rl!!!!"Q!!2rJ!!!!%)! +!!!S!!2rQJ!!!)!!!rqH!!!!+!*!l!J!"!!!"C!!K!*!(c!!K!*!(C"P,!*!*)3# +3"f3!EJ#3#b%!N"[B!!!!,3!m!*!))&p36dl36PB!!#"Z!!J3%'B32c`!"NkY"BS +JEJ!)%,cq2`!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/DrawingTable_1.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/DrawingTable_1.hqx new file mode 100644 index 000000000..3ca70972a --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/DrawingTable_1.hqx @@ -0,0 +1,196 @@ +(This file must be converted with BinHex 4.0) +:"'4b9$%!39"#6%&33P!"!!!!+Q)!N!3kMJ!-%eF!&!!!!"3!!J!#!+`!!3!%!!- +!$!#3"J%%!!S!!3!#!!%!!3%K!3!!!!)!!3!!"J#3"`%!!!!"!*!(!3#3""eH&Rm +!N!8"!!%!!3!!!!%!!!!#!*!B#mm,c`''!*!2!3!!!!%!N#Gi!!m!!!")!%J!N!3 +#m!*!rr(rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J! +!!!%R$`!"!*!1%!#3#4!!rlArTJmY#jS!#!#3$KN"!!)!!J!#!!!!"J!&!*!&&!! +"!5%#!!%!!!!"!*!'#J!$!#J*IJSb#Ai(#!Pq"`J%l!F)"1`(#!6X$9`%l!eF#Ai +0A!Pq$9`*IJSb!!3!N!8'!!-!J!!!!"`!!3%K!J!"!!!!!3#3#3-U!bS%1!55!!B +!"!#3"4S!!3%K!J!"!!!!!3!)F!(#!3i&S!#3"9S!"J!$!*!&(!!%!6%#!!&R!J! +"F3#3"[rr#L-%6!bC#)3!"J!(!*!&+J!"!*!(!3%!!8X!!!"L!#J!b3$C!')!+!$ +*!0N'-3H&#MF1E`!!#DJ!!!"rrri!N"%"!!!2J!!"`!#3%J(`!!!!1!#3$`(S!!i +!N!3(!*!5F!#3"F!!N!j*V!#!!*!&)!#3$LQ3!!-!N!B3!*!21!3!N!B-!!!!(rr +rr!#3#4J!N!B#!!!"i!!!!rrrJ!#3"("P)!#3"3)#!!!q!*!'Ii!!!!"3B8!!N!8 +#!3!$`!#3"hi!N!9!!*!&!J#!(!#3#!(i!!!!&%!!N!8#!)"J!*!*"i!!8q5!!*! +&!J"$J!#3#R!!!"Z!!*!&!J"-!*!,$!!#IB!!N!8#!$!!N!X#!!!!J!#3"33!F!# +3#`%!!!"!!*!&"!#3!!#3$-!!!%!!N!8%!3J!N!`J!!"!!*!&"!B)!*!-%!!!)!# +3"33)#!#3$!J!!#!!N!8%-!3!N!`%!!!3!*!&"%!%!*!-!J!!%!#3"35!!J#3$!% +!!!J!N!8%J!)!N!`"!!!%!*!&"3!#!*!-!3!!"!#3"3B!!3#3$B!!!J#3"3B!!3# +3$B!!!J#3"33!!3#3$B!!!3#3"3`!!3#3$!%!!!#!!*!%&!!!J!#3#`%!!!#!!*! +%&!!!J!#3#`)!!!"!!*!%*!!!J!#3#`3!!!!J!*!%4!!!J!#3#`3!!!!J!*!%K!! +!3!#3#`J!!!!3!*!%JJ!!3!#3#a!!!!!)!*!%JJ!!3!#3#b!!!!!%!!!!!3)!!#! +!N!XJ!!!!"!!!!!%#!!!J!*!,3!!!!!)!!!!#!3!!)!#3#i!!!!!"!!!!!J%!!#! +!N!S"!*!&J!!!"!%!!"!!N!S'!*!&J!!!"!%!!"!!N!S)!*!&3!!!"!%!!"!!N!S +`!*!&)!!!#!#!!"!!N!T!!*!&%!!!#!#!!!J!N!N"J!#3"3J!!!J!J!!)!*!*!J# +3"JJ!!"!!J!!)!*!*$!#3"J3!!#!!3!!)!*!*-!#3"J)!!#!!3!!)!*!*3!#3"J% +!!%!!3!!%!*!)!B!!N!B"!!"!!#!!"!#3#!)!N!L!!)!!)!!%!*!)$!#3#%!!J!! +3!!3!N!J`!*!))!#!!!J!"!#3#-!!N!J3!3!!#!!#!*!("`#3#3J"!!!%!!)!N!F +B!*!*"J)!!!-!!J#3"q!!N!N""!!!!-!#!*!'"`#3#pJ!!!!J!J#3"MJ!N!XJ!!! +!'!)!N!8$`!#3$`F#!*!&(!#3"J4l!*!*m3#3"H!!N!CUr`#3#3rJ!!!!$`#3%J% +I`!!!m!#3"b!)!*!*!3!rrrm!N"-"!*!A!3#3&`%!N"L!!*!,!N%!N!U!!*!AJ!# +3#f3"!*!+J!#3#`0G!*!+J!#3#hrr!*!+3!#3&d!!N"G!!*!A3!#3&b!!N!YL0!# +3#L!!N"FJ!*!,Irm!N!SJ!*!A)!#3#`%!N!XJ!*!A%!#3&a!!N"F3!*!A%!#3#f& +F!*!+%!#3&`J!N!X")!#3#JJ!N!X"'J#3#JJ!N"F%!*!A"!#3&`3!N!X''!#3#J) +!N"F#!*!,B)3!N!S"!!!!`!#3#!%!N!Z!!!F!N!Krr`#3#i!"q!#3&8!H!*!@,q! +!N"B`!*!0"J!)!*!&+!!"!*!)!D!!!!55#aJ,eK(N!!-&LJ@3!!C%"Mi!!!dZ!!! +2&JdZ$5i!N!@k!+i4!3%!#J#3"ES!VJS!N!Jdrj!%!*!%Q!!@!*!&3!#Z!*!&3!# +Z!*!&3!#Z!!-#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`! +#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`! +#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!#k`!(p`! +"!B$h!!Ih!!%"i2F!"rF!!3(`p`!(p`!"!Ich!!Ef!!$rp`!(pJ!"rm$i!!If!!( +ri2J!"rB!!Iriq!!(pJ!"rrli!!Mf!!*rri$j!!Mf!!*rrm$j!!Mf!!*rrr$j!!M +f!!*rrrcj!!Mf!!*rrrlj!!Rf!!-rrrq!qJ!*pJ!$2rrri2S!#IB!!crrrr$k!!R +f!!-rrrrmqJ!*pJ!$2rrrr[S!#2B!!"rqrrS!Q!!@!%!!!!#!!+i!3!!!!)!!VJ" +!!!!!J!#Z!!-+pJ!!(rlr!-$l!!Vf!!!Ir[m!i2X!#[B!!"rqr`$`q`!+pJ!!$rl +r!2Ml!!Vf!!!2r[m!r2X!#2B!!!rprrX!#[B!!!rpr`#!r!!+pJ!!$rhr!-$m!!V +f!!!(rIm!i2`!#[B!!!Ipr`$`r!!+pJ!!"rhr!2Mm!!Vf!!!(rIm!r2`!#[B!!!I +pr`$mr!!+pJ!!!rhr!2lm!!Mf!!!$r2rm!!Vf!!!$r2m!J2d!#[B!!!2mr`#!r3! ++pJ!!!rcr!-$p!!Vf!!!"r2m!i2d!#[B!!!(mr`$`r3!+pJ!!!Icr!2$p!!Me!2c +r!2Mp!!Me!2cr!2cp!!Ve!!"rrIm!r[d!#[8!!(rpr`$qr3!+p3!!Irhr!2lp!!M +e!!!rr2rp!!Me!!!rr2rp!!Me!!!Ir2rp!!Ve!!!Ir2m!J2i!#[8!!"rmr`#!rJ! ++p3!!$rcr!-$q!!Ve!!!2r2m!`2i!#[8!!!Imr`$!rJ!+p3!!!rcr!1$q!!Ve!!! +"r2m!i2i!#23!r2m!i2i!#[3!!(rpr`$JrJ!+p!!!2rhr!1$q!!Vd!!!IrIm!i2i +!#[3!!!rpr`$JrJ!+p!!!"rhr!1$q!!Vd!!!$rIm!i2i!#[3!!!(pr`$JrJ!)m`$ +pr`$JrJ!+m`!!Irlr!1$q!!Vc!!!rr[m!i2i!#[-!!"rqr`$!rJ!,p!!"IiIqr`$ +!rJ!+p3!!$rcr!-$q!!Me!2[r!)$q!!Vf!!!(qrm!J2i!#2B!!!rlrrd!#2B!!$r +lrrd!#2B!qrm!r[d!#[F!!!(lr`$qr3!+p`!!!r[r!2cp!!Vh!!!(qrm!q2d!#[F +!!"rlr`$`r3!+p`!!(r[r!1$p!!Vh!!!rqrm!J2d!#[F!!(rlr`#!r3!)p`$kr`$ +!r3!+q!!!!IVr!1$p!*J!&J#!!!!!ZJ#Z!)!!!!#k!+i!J!!!!,S!VJ!$#[J!!!( +kr`$Jr3!+q!!!!rVr!2$p!!Vi!!!$q[m!m2d!#[J!!!Ikr`$ir3!+q!!!$rVr!2M +p!!Vi!!!2q[m!r2d!#[J!!!rkr`$mr3!+q!!!(rVr!2cp!!Vi!!!Iq[m!r[d!#[J +!!"rkr`$qr3!+q!!!(rVr!2lp!!Vi!!!Iq[m!r[d!#[J!!$rkr`$qr3!)q!!!2rR +rr3!)q!!!2rRrr3!)q!!!2rRrr3!)q!!!IrRrr3!)q!!!IrRrr3!+q!!!IrRr!)$ +q!!Vi!!"rqIm!J2i!#[J!!(rjr`#!rJ!+q!!!IrRr!)$q!!Mi!!"rqIrp!!Mi!!" +rqIrp!!Mi!!!rqIrp!!Mi!!!rqIrp!!Mi!!!rqIrp!!Vi!!!rq[m!r[d!#[J!!$r +kr`$qr3!+q!!!(rVr!2lp!!Vi!!!Iq[m!r[d!#[J!!"rkr`$qr3!+q!!!(rVr!2c +p!!Vi!!!Iq[m!r2d!#[J!!!rkr`$mr3!+q!!!$rVr!2cp!!Vi!!!(q[m!q2d!#[J +!!!Ikr`$ir3!+q!!!!rVr!2$p!!Vi!!!$q[m!m2d!#[J!!!(kr`$Jr3!+q!!!!IV +r!-$p!!Mh!2Vr!-$p!!Vh!!"rqrm!J2d!#2F!!$rlrr`!#[F!!"rmr`$qr!!+p`! +!$rcr!2cm!!Vh!!!(r2m!q2`!#[F!!!2mr`$`r!!+p`!!!Icr!1$m!!Mf!2cr!-$ +m!!Mf!!!rrIrl!!Vf!!!2r[m!r2X!#[B!!!2qr`$`q`!)p3$qr`$!q`!)p3!#$rr +qqJ!(p!!"2i$k!!,V!*J!&J#3"8!!VJ#3"8!!VJ#3"8!!VJ!"!ZX!!ZX!!ZX!!ZX +!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX +!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX +!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!!ZX!"rF!!3'!p`!(p`!"!H$h!!Ih!!%"m2F +!"rF!!3(mp`!'pJ!!rrF!"rB!!Ir!q!!(pJ!"rq$i!!If!!(rq2J!"rB!!Irqq!! +)pJ!#Irq!q3!)pJ!#Irr!q3!)pJ!#Irr`q3!)pJ!#Irrmq3!)pJ!#Irrqq3!*pJ! +$2rrrJ2S!#IB!!crrrq$k!!Rf!!-rrrr`qJ!*pJ!$2rrrr2S!#IB!!crrrrlk!!M +f!!!Ir[rk!*J!&J"!!!!!J!#Z!%!!!!#!!+i!3!!!!)!!VJ!"#[B!!"rqr`$!q`! ++pJ!!(rlr!1$l!!Vf!!!Ir[m!m2X!#[B!!!rqr`$iq`!+pJ!!$rlr!2cl!!Mf!!! +2rIrl!!Vf!!!2rIm!J2`!#[B!!!rpr`$!r!!+pJ!!"rhr!1$m!!Vf!!!(rIm!m2` +!#[B!!!Ipr`$ir!!+pJ!!"rhr!2cm!!Vf!!!(rIm!r2`!#[B!!!2pr`$qr!!)pJ! +!!rcrr!!+pJ!!!rcr!)$p!!Vf!!!$r2m!J2d!#[B!!!2mr`$!r3!+pJ!!!Icr!1$ +p!!Vf!!!"r2m!m2d!#[B!!!(mr`$`r3!)p3$mr`$ir3!)p3$mr`$mr3!+p3!!Irh +r!2lp!!Ve!!"rrIm!r[d!#[8!!(rpr`$qr3!)p3!!2rcrr3!)p3!!2rcrr3!)p3! +!(rcrr3!+p3!!(rcr!)$q!!Ve!!!Ir2m!J2i!#[8!!!rmr`$!rJ!+p3!!$rcr!-$ +q!!Ve!!!(r2m!`2i!#[8!!!2mr`$JrJ!+p3!!!Icr!1$q!!Md!2cr!1$q!!Vd!!" +rrIm!i2i!#[3!!$rpr`$JrJ!+p!!!(rhr!1$q!!Vd!!!2rIm!i2i!#[3!!!Ipr`$ +JrJ!+p!!!!rhr!1$q!!Vd!!!"rIm!i2i!#2-!rIm!i2i!#[-!!(rqr`$JrJ!+m`! +!2rlr!1$q!!Vc!!!Ir[m!`2i!#r3!!Aq(r[m!`2i!#[8!!!rmr`$!rJ!)p3$lr`# +!rJ!+pJ!!"r[r!)$q!!Mf!!!2qrrp!!Mf!!!rqrrp!!Mf!2[r!2lp!!Vh!!!"qrm +!r[d!#[F!!!2lr`$mr3!+p`!!"r[r!2Mp!!Vh!!!Iqrm!m2d!#[F!!"rlr`$Jr3! ++p`!!2r[r!)$p!!Vh!!"rqrm!J2d!#2F!q[m!`2d!#[J!!!(kr`$Jr3#B!"B!J!! +!!,S!VJ#!!!!!ZJ#Z!)!!!!#k!+i!!3Vi!!!"q[m!i2d!#[J!!!2kr`$`r3!+q!! +!!rVr!2$p!!Vi!!!(q[m!q2d!#[J!!!rkr`$ir3!+q!!!$rVr!2cp!!Vi!!!2q[m +!r2d!#[J!!"rkr`$mr3!+q!!!(rVr!2lp!!Vi!!!Iq[m!r[d!#[J!!"rkr`$qr3! ++q!!!(rVr!2lp!!Vi!!!rq[m!r[d!#2J!!$rjrrd!#2J!!$rjrrd!#2J!!$rjrrd +!#2J!!(rjrrd!#2J!!(rjrrd!#[J!!(rjr`#!rJ!+q!!!IrRr!)$q!!Vi!!"rqIm +!J2i!#[J!!(rjr`#!rJ!)q!!!IrRrr3!)q!!!IrRrr3!)q!!!2rRrr3!)q!!!2rR +rr3!)q!!!2rRrr3!+q!!!2rVr!2lp!!Vi!!!rq[m!r[d!#[J!!"rkr`$qr3!+q!! +!(rVr!2lp!!Vi!!!Iq[m!r[d!#[J!!"rkr`$mr3!+q!!!(rVr!2cp!!Vi!!!2q[m +!r2d!#[J!!!rkr`$mr3!+q!!!"rVr!2Mp!!Vi!!!(q[m!q2d!#[J!!!2kr`$`r3! ++q!!!!rVr!2$p!!Vi!!!"q[m!i2d!#[J!!!(kr`$!r3!)p`$kr`$!r3!+p`!!Ir[ +r!)$p!!Mh!!!rqrrm!!Vh!!!Ir2m!r[`!#[F!!!rmr`$mr!!+p`!!"rcr!2Mm!!V +h!!!$r2m!m2`!#[F!!!(mr`$Jr!!)pJ$mr`$!r!!)pJ!!2rhrq`!+pJ!!$rlr!2c +l!!Vf!!!$r[m!m2X!#28!r[m!`2X!#28!!Jrrr[S!"r3!!6q!qJ!#k`$r$aBP)9" +6,8&NEf*P,6)Z-#"&8&0',6%Z-JdP*80bC@&dEh)k3@4[BQ8J5@aXGA0dFQ&dEh) +S9%dT)$%Z-5!`N!S0*59'Eh)k)!dP*94TG'aP1Q&NEf*P,Q9`F`dP*80bC@&dD@p +Z4'&dC6Sh,c)i,c)`)$Nk-M-0*59%Ef0eE@9ZG&"bEf06CA4c1N&NEf*PAdPXE(9 +cG(*KG'pbAc%Z-5!`)$!0*59%Ef0eE@9ZG&0eF("XD@9N8(*[Be0PG(-k3@4[BQ9 +I5@aXGA0dFQ&dEh*I-5ia)$!J-!dP*84[Bh9YC@jd4QpZG(-k3fpeFQPPFJdP*8* +[G@jND@jR3Qpi1Ldc-#!Y-c%i)$%d0#!Y-6-b$58P9'9YF'aKG'9#EhJk-MJi)#d +c0M!J-MJi)#dc0M!0*59&EQ4$EfeYC@jdF`dP*8*PCfPZ8(*[Be0PG$T"C'pLC9p +*E'aeFh4bBA4[FPma,M%J-#!`$58J3fp`HA*TCfKd)#K$+5!a16Jh)%&NEf*P)&0 +jFh4PEA-J5@jMEh*`Eh*KG'9N,JdP)%&XE#"5D@GSG(-J8Q9cCA*fC@3Z$58J3@4 +[BQ8J5@aXGA0dFQ&dEh)JDA-JB5"dFQ&NC@eKFQXJEfBJ3@4[BQ8J8hPcG'9YFb" +*EQ0[FR"[FQ&dC@3Z$5p"C'pLC9p*E'aeFh4bBA4[FPma,M%JC(9`)$%`-#"ND@0 +d)'4PCL"XEf&N)'*PCfPZ$5p@CA*cD@pZ)$!JC'9Q$5p5CACTFfP[EL!`)'4PCJd +P)'4PCQPZDA4TEfiJEh"PFQ&dEh*c$5pLC'9Q)(YLD@jN)'4PCRdJBQPZC#"NC@B +0,faNC@BJHfa[B@3JC'9QI5"LC'9Q$5piC'9Q)(YPH'0S)'4PCRdJBQ4PCJdP)'G +bBA"SD@-JFh4KG'8JEh"PFQ&dEh*c$5pI5b"l-b"TEQ4PH#"KC'3JEQ9R)'4eF#! +`)'ad)(Y`Eh!J-(dJD@BJ-b!a)(*[E'ap)'*NC@B0,epV)#pcCA4MEAPLBfpXEh) +JGfKPFQ8J$AX[Ff9dBfejBQ0[E'pb)'GPG(dJHhXa)(0eBL!d)$%JFQpXE#"I5b" +I5b"I5b"cCA4bCf*MEfa[FL"`Eh"p)'*TEQ4p)'PQC@acC5"NC@B0,fFJHbpIBL" +iC'9Q)#p`)(YIBL"cCA4RFQ&jI5"NC@Cp)'*NC@B0,dFJHbpI3L"iC'9Q)#p3)(Y +I3L"cCA4RFQ&jI5"NC@Cp)'*NC@B0,fXJHbpIBL"iC'9Q)#pIH5"iC'9Q)#pIE5" +iC'9Q)#pIBb"iC'9Q)#p`)(YIBb"IE5"IH5"IBL"IDhdJC'9QI5"LC'9Q$5p,)(X +[Ad)JH'4PCL![AeNJH'4PCL![AddJH'4PCL![Ad-JH'4PCL![8#"lAd-JAddJAeN +JAd)JAfYp)'4PCRdJBQ4PCJd[C#![Ff9dC'&cD#"XC'9Q$5pID5"MGA*bC@jdCQa +KG#"NC@B0,fNJHf4eF#!`)'9a)(Y`Eh!JAfPp)'PQ)(0PG'CXBA4p)'*NC@B0,fS +J,h0PG'aTEQ9UEfPZ)'aNC@B0,dSJ,h0PG'aTEQ9MBA!JE'4PCJd[65![Ff9dE@P +dCA*XD@eTG#"XC'9Q$5ph)#pcCA4XD@jPGfPNG'JJE'4PCJdP)("KG'JJBfpZFh4 +bG@0dD@pZ)'p`CA*KG'pbF`d[Ae)JHbib05"cG@)JFQpeEQ3J,M)e)'&NC(dJBQ4 +PCJd[Ah)JHh4bB@jcCQpbE5"I8L"PH'0S)&p5)'9iBfJJDA4bB@jcCQpbEAdJBQ4 +PCJd[Bb"lAh)JBh9bGQ9dEhdJBQ4PCJd[3b![Bb"XC'9Q$5pf)(YMGA*bC@jdF'p +TER3J0L!b)(*[E'`JAh)JBh9bGQ9dEhdJBQ4PCJd[9L![GL"XC'9Q$5pj)(YIFL! +b)'0[F(NJBh9bGQ9dEhdJBQ4PCJd[@5![H5"XC'9Q$5pX)(YIFL"XD@jPG'pp)'* +NC@B0,d`J,f`JE'4PCJd[E5"lAh)JE@pfCA4[I5"LC'9Q$58JCA*bEh)JEh"PFQ& +dEh*c$5pIC5"EA5"NC@B0,ep&)(YIC5"XC@jRG'JJ-#"ZC5"lCh0KGQ8J-#"R)$! +J4b!`)'NJ-#"+)$!JDL!a)(FJ-6!J65"EA5!`)'30,d0[GA*TCA)J-M!J-#!`)$% +JHL"E-#ij0MBJ-#ib06NJ,6!Z-M8j)$!Z16Bf$9pP)$!JCf9d)&pP)$)JCf9d)'& +NC#!b)'4TGL"IC5!a)'GPG#"IC5!c)'GPG#"KC'3J-L"NDACG)'8JAfBJG#"8)'G +bCA0dEh*PI5"TCRdJBQ4PCJd[AfCTE'`JHhYQD@aXI5"cG'p`F'9N$AX[Af8J@h" +KG'KLBQpiA5"NC@BJ,epQ)#K&8P*28MSJBf&Z*h3JCQPXE#`JD@jMFQ9KFf8JCQa +KG'jPFh-T)'4PCL"Z)&p&I5"TCRdJBQ4PCJd[Ah0dFQpVC5"lHh0dFQpVCAdJFh4 +[F("PC!el,epP)&Y`BA4SBQ*[H&dJC'9Q)#pICL!S49*56e)k)'0KELGd)(0dFQp +VC5`JD@jMFQ9KFf8JCQaKG'jPFh-T)'4PCL"Z)&p&I5"TCRdJBQ4PCJdP)("KG'J +JF'&TER4TEQFJEh"PFQ&dEh*c$5pZ)#pZCAG`BA4S)'aNC@B0,diJ,fiJE'4PCJd +[4L"lF#"ICQPXE(dJBQ4PCJd[CL"lBfa[Ff9`BA4S)%Cp)'*NC@B0,e-JHe!JAh0 +dFQpVCAdJBQ4PCJd[Fb"lBfa[Ff9`BA4S)&0p)'*NC@B0,d)JHfGcBACP)%BJCh* +PFh4[FQ8J8hdJBQ4PCJd[BL"lBfa[Ff9`BA4S)%*p)'*NC@B0*5"dCAKd)'*XEf0 +V)'0[ER0dFR9MG'P[EL"KEQ3JF'&TER4TEQFJEh"PFQ&dEh*c$5pIFb![BA0SEhF +JE'4PCJd[Ae-JHbJr+5"PH'0S)(Xb)'0[F(NJ-#"PH'0S)("eG#"`Eh!JC(9`)'C +KE(0P)'0SBA*`BA4S)'0eFR*PER4`EfPZG#"ICb"cCA4YBA4bDAJ0Ah0dFQpVC5" +I4b"cCA4YBA4bDAJJE@pfCA4[)$-JBfp`H5"`Eh!JFQe[GQ9dEhdJCQpbB@aX)(" +[F#"`Eh!JF'p`)'jp)'*NC@B0,ep")(YIB5"YEhCPG'mJAh3JCAKMD#!`)'9iBfK +p)'*NC@B0,ep-)(X`)&pX)'jPCb"dFQ&ZFfaKG'8JAdFJBh9bFQ9ZG'eKG(*TH#" +`Eh"p)'*NC@B0,eph)(YNGA!JFh4bD@jRGfPNG'JJCAKMD#!c)#da)(*[E'`JE'9 +ZCh4S)$%JFh9L)&pd)'eeE#"KC'3JCAKMD(dJBQ4PCJd[AhSJ@hX`)$"p)'*TEQ3 +JHf4eF#"IGb"PH'0S)'jPCb!b)'4TGL"PH'0S)'jPCb!b)'4TGRdJBQPZC#"lC(9 +`)&ph)'9iBfJJEQ9R)'9iBfJJEQ9RI5"LD@jNA5"NC@B0,hSJHepk)'9iBfJJCf9 +d)#pIB5"iC'9Q)#pIG#"iC'9Q)#pIE#"iC'9Q)'9iBfJJCQPZC'C[ER3JCAKMD#" +cBf&XC@C[ER3JFf9dCQpZG(dJBQ4PCJd[AfFJE@&dFQPi)'4PCJd[AdFJE@&dFQP +i)'4PCJd[Ad3JHepR)'0eFR*PER4YBA4bDAJJF'p`)'GcBACP)'0[EQ0KG#"I4b" +MGA*bC@jdE@&dFQPi)("[F(dJBQ4PCJd[C5"lAd3JF#![G#"lAd%JAh-JAdap)'4 +PCRdJBQ4PCJd[FL"lAd3J8#![G#"lAd%JAe-JAdap)'4PCRdJBQ4PCJd[B5"lAd3 +J,h3JHf4eF#"`)&p")&pc)&!JAd%JAe-JAdap)'4PCRdJBQ4PCJd[Eb"lAd3J,h3 +JHh"[F#"I6(dJC'9QI5"LC'9Q$5p8)(YRFQ9cG'pbCAdJBQ4PCJdP)'GbEh9`)'0 +[ER0dFR9MG'P[EL"[F'9bBA4[FR-0,h8JHhdJBQ4PCJd[95"lI5"LC'9Q$58JCQp +ZG#"MEfjcG(*eBh4TEfiJEh"PFQ&dEh*c$5pD)(YQD@jNCQpZG#"LC@GTEL"MGA* +bC@jdC'PMG#"NGA!JE'9ZCh4S)'4TBh3JBQ9RD@i0Hc%JD@jNCAJJ,dC*4#"ZC5" +lC'9QI5"lF'p`)("[F(dJD@CPE(0PI5"QEh*KE'`J,dC[ER41B@eP)'9iBfJJC'9 +Q)'4eF#"XC@jRG'JJ-#"ZC3el,d9ZBfpND@jR)%9ZBfpND@jR)$)e0L"KFR*KH5" +MEh"j)'4PCL!`)'9iBfJJHf4eF#"dHA"P)#pZB@ePG(P`C5"PF3el4@jMEf4TEQF +J-L"TEQ4PH#!b)'PZC'9i)("eG#"`Eh!J-5"KC'4p)(YPH'0S)("[F(dJD@CPE(0 +PI5"QEh*KE'ap)'PQ)("[F!eMGA*bC@jdC'PMG#"NGA!JC@jN)'9ZC#![4QpZG%j +KE@8JCf9d)'9iBfJJC'9QD@jPCQpZG#"`Eh"p)'*NC@B0C@jN$58P4@jN8(*[Be0 +PG!dP*89ZC&"bEfa[C`dP*8*PCfPZ8f9dGA!03@4[BQ9I5@aXGA0dFQ&dEh*I-5i +a)'*PCfPZ$@i0*59&EQ46CA4eF!d`)'F0-#"($6!JD3d`)%S0-#"U$6%JG`da-#" +0$9YG-#"N$58P6QpdC6S006FJ,6%h0L"Y$6%d-b!Y-M%j)$%a-b!Y-M8e)$%`0L! +Y-M8f)'-016NJ,6)e0b!h-5!Y-M)j)(N00M8J,6)a0#"X$8B0G3dh15!Y-c%f,M8 +f-M3JE3dj1#ie-M8j)#dc-6BZ06Bb0#!a-63Z-c8e-b!Y-c!`,M3a0M3J-6%d,M- +e06-J,6)i-#ie)'-0-6%d,M-e06-J,6)f-#ie1$-f)$Ni,M8b06NJ,6)d0#id-cF +f)$Fj)#db0$3Z0$-h0L"M$68j,M3h0$%J,6)d0#id-cFf)$3c,MBd0$BJ,6)f-#i +e1$-f)$3c,MBd0$BJ,6)i-#ie)'-00$-Z0M3d0L!Y-c!`,M3a0M3J06NZ0$Fd-5! +Y-c%f,M8f-M3J0cNJ,6-a0Lie0M)d)'-0CJdh15!Y-MJ`,M8JE3e'$980*598FQ& +TE'9b$9p&)'9ZC!d!"J!#!*!&%S!%!6%%!!%!!3!0A!)F$3)%1!!'!!)!N!85J!% +!)3!!!`!"!!jU!K`0YJ@J!!B!!J#3"4+!!3%KJJ8$!!%'$hJ#d!i3#"B!"J!&!*! +&&!!"!5%#!3B!!!!"!*!'!J!!!!J2l!V1$1F0'!!%!*!&"J!#!*!&%J!"!5'#!3B +!!3!1a!d#$EB2(J!'!!)!N!85!!%")B)""J!"hJi3%1!1a"1`!!B!!`#3"4`!!3% +KJJ%'!!)!!3#3#3l%"`J2(JJ@!!B!!`#3"4`!!3%KJJ%'!!)!!3!!!3!%!*!%$QS +)F!mH#GJ!"J!$!*!&(!!"!5'#!3B!!J!"!!!"!*!'$QS+M!pi#jS!"J!#!*!&%J! +"!5%"!J!!!3!8#J(#%NJ%NJ!'!!)!N!85!!%")3%$!!!"!"D!!K`8C!9'!!B!!J# +3"4)!!3%K!33!!!%+'%)#("Fd"8B!"J!#!*!&%J!"!5%""3!!!3!CUJ*f'2B'9!! +'!!)!N!85!!%")3%'!!!"F4X5!bSDAJDZ!!B!!J#3"4)!!3%K!3F!!!%!&!S)F"0 +@$%i!"J!#!!%!!!!5!!%")3%!!!!"!"A-#539c!i3!!B!!J#3"4)!!3%K!3)!!!% +!&ii**"LF$K!!!%L"!!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_1.0.hqx new file mode 100644 index 000000000..3eab3b19e --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_1.0.hqx @@ -0,0 +1,75 @@ +(This file must be converted with BinHex 4.0) +:"'CbC@8!B@0Q-f&MB6-"!!!!%"d!N!4P[Q&MCM-!"3"N(P!@J"l`&qJ!N!93!,3 +!!J!!!!S!N!S,6'&cCA*AFQPdCA)!N!8r)dVrrJ&k!!-!N!B'6'9dG'9b9&*6!!0 +,IJ"!53J!#HcH!$mNJJ!r69)!2`!!!!-!N!@d!!!8NJ#3$632S3#3"3)!!!!$!!3 +!"3!'!*!&F!qL!*!0%!!(!!J!#3!+!!X!$!!0!!i!$`!3!"%!%J!6!"3!&3!@!!! +!*!!#!!!!%!!&!*!&&`!B!"N!'J!E!!!!(!!#!!!!%!!$!*!&(!!G!"i!!!!`!!) +!!!!3!!J!N!8I!#!!)3!L!#-!*!!P!#B!!!!i!!)!!!!3!!S!N!8R!#J!+3!U!#X +!,!!Y!#i!,`!`!!!!-"%b!*!&C!#3#4F!-30Q%U)-j!`k!*!(C"%d!*!&C!#3#a` +!!!!%!!!!#3RP&N3*j4C%#m3@T!!!!!N3D"D($H-@eK$#&'3!!J!*$hm4$`lJ%Sm +2ja!6!!!!#4%2$k!4&3qG%3m2S!!!!$34-3#3"@3!N!Xb#S`Dp"21&F)!N![#%!B +!N!9N!*!,,!!-!!!!"rb!!!`!!!!-!!!!"J!!!!eAJ!!09i!!$9H!!!`!!!!-!!! +!$!#3"4B!N"N,C'CRC!eLEQ*fGQ)2S!Z)%TJ*U!3*!!%!N!X"!*!6!3!!!!%!!!) +!!!3!-`!I!"J!!2rrrri!N!8"!$-!(`!B!!$rrrrq!!8!!3!"!$-!)!!B!!$rrrr +q!!N!!!!"!*!&!QTi!$`!+3!,!*!(-"%b!*!&C!#3#c3$K!V`#*J'`J#3"c34-3# +3"@3!N!Xe#S`+#Jmm"IS!N!@-!)`!!!%N%63!N!9N!*!,0J!!!"!!!!!*"#X%E33 +V"'d$X39L!!)!#3+E#JF"M!L&!kF,J`!#!!N(d!eT"L8-X`Ip$A`!!J!*#h80c3U +c$Sm0f3YN!!!!#3dR!PJ+933i$5F#@!!!!!N88!i3&&!1%!bc$`#3"!Rpk``F"&8 +0PrpV#T`!!J!*"!N&r3'#"L`(h`@c!!)!#3ZA#&8)j`E6$FF*N!!!!!!*%E818a! +h#eB4Y3j6!!!!#3H[#H8(V`RP#3)(NJ!#!!N5A!GX$a!&V"BM#@d!!!!*'T!!$VF +A)``N'T!!$VF!!!!*!5crR!%Xrj`#3`&!!!!!#33V!PJ#X`(#""N#KJ!!!!N$k!0 +"!qJ#c32S!d%!!!!d%6%!!!!("Q%JEQpdC3"N!!%!N!NG%IJG,K8f'B)!N!Xd%6% +!N!9N!*!*'!!h!))9I!C!$T)!N!Xd%6%!N!9N!*!*1!!j!MS0+JJ@"2B!N!Xd%6% +!N!9N!*!*'3!k$T),9"5d"!B!N!Xd%6%!N!9N!*!*'J!l$5S6*"-N$i)!N!Xd%6% +!N!9N!*!*'`!m"p!9'!bH%!3!N!Z1%!B!N!9N!*!(#2rr!"6rr`#3"3J!"UX!!!` +!N!8%!*!(!R3a$qB#!"#K!4!%#3!"!*!,!3#3$a3!!!!"!!!!!3!!!3%!!J!c!"m +!'!!!rrrrrJ#3"3%!N!FL!!*UH!!#!*!(1"!&!!!!"`CK)'j[G'8!C!#3#6d!!!! +`!!%!N!X"!!!!#J#3#!8%%63!N!9P!*!,(3!!!%i!!!!*!TX4P!+E%C3#Qa8d!!) +!#3S(&6N(!KFk#iX80J!#!!N0L`bK#S8,V4$c$E3!!!!*&,3CC"+9&D`3QKPN!!) +!#3Lj'(X-+KNd#$dBB3!#!!N&H"H4"EFArJ6Z&U3!!J!*"685'35E%d`&GK'9!!) +!#3V`%)N*63qJ$2!4TJ!!!!N1%"Hc$B38Y!i3&l-!!!!*"%`6!`4-%`-%[a+2!!) +!#3ER%3m''a$p#+d413!#!!N0LaF-$3d@P!mS'*3!!!!*%GFDda"$'6m1MaPY!!) +!#3R%&SF-q4J@"[J9+J!!!!N$Ba'e""!9*30M%E8!!!!*"AJ6C`9i%fF&H!pH!!) +!#34-#4d%NJdM"$%(KJ!#!!N&h!2S!iN$D`J5"&i!!J!*#6m)Q!K&"T!!#QX,"`! +!!!N-j!qJ$"-163aU$6m!!J!*#a%(M3UQ#I!,3`C[!!)!#4#*"CN1X!6N&2`(5`! +!!!NCK4-N&a)2$"BM%eN!!J!*$Hm6!a&2%e3+"4+Q!!)!#3F)$8J'a"%f"aX-,3! +#!!N18`Y8$%`+%K'k$A!!!!!*&(%AN40P%P83B"IT!!!!#3GX%Tm)M"D-#QJ4E3! +!!!N0V"CP$4i6QJXl&jm!!!!*"X8AF!R4&ld'BK86!!)!#3Mm%E8'"K&+#r-5)!! +#!!N)GaLp#TSB'3,C'QX!!!!*"EX2i`-"%TJ&Z`rM!!!!#3d&(VX0"4kl#Q8Fq`! +#!!N&04G2"K!D9`42&#N!!!!*#*J51`F3%bB)Q")l!!!!#3kh(VX1Yakl$6SFM3! +#!!N+M"PN$%mE@JR,')d!!J!*"p!@U!Jl&l8(KKAZ!!!!#3Lj%X!)C"2%#6)8"3! +!!!N+m"9m#fN9l!NE%68!!J!*#,N*a!MJ$[i)S`Dq!!)!#3Zi!TX)aJ(R$R!$3!! +#!!N4e`RP%'X)$4)M#NJ!!J!*&082S"Bl$8S6Za&i!!)!#3ia$P-1-`j8$*X0IJ! +#!!N)G`FT"Si+Y!LT"XX!!J!*$$d&Q3VF"-X1qJFa!!)!#4-N$Hm4CJY,%hi1H3! +#!!N88")C&2)43"0G%ed!!J!*$8J5`!mR%`3,1"*e!!)!#3DN%#8(Va'*"6B123! +!!!N)r![C#!3-LJZc$LB!!!!*%)NB@4#*%ei02"KC!!)!#3RP&ZX,i"LX##-9@3! +!!!N+ca$Y#884cJa@%Z8!!!!*$M%B[3ia&3),`KLp!!)!#3Mm&#m*LKB+#+J6&3! +#!!N)f`pr"li36JSG$T3!!J!*$--4-!bG%3`1j40"!!!!#4'e',d4'48,$r!AS`! +#!!N1-45d$h3@A!a)%M-!!!!*#e30*`Y8%,%2KJdR!!!!#4(i&!d4q!rE$488$3! +!!!N+m!cN#[!4aa!5$%)!!!!*%Z%9R41J%(d3A"@G!!)!#3ia%fF2cK5F#bN4)J! +!!!N)%`[C#1B3#!UH#pN!!J!*$T82I`cV$KB1Q3q#!!)!#4'8&&!5dK,E$ii@V`! +#!!N-Aa0&$@X8D`R"%'8!!!!*"dX+V3Ic$`))1`TH!!)!#3Y8#S`+(JRQ$5%,J3! +#!!N18`lB$B)-qJq6%EB!!!!*%3m@C4"r%e%,qKCP!!)!#3H0%KN*`K@$"c`4R!! +#!!N&h!k9"C`28JAc$N`!!!!*"N!1f!C$$ZF'3!lB!!!!%K$0!*!&2J!J!*!%%K$ +0!*!&2`!K!*!%'"$3!!!!#2q3"!!8!!!!3!!J!#!)V!)!N!38%0%!N!9"!!!!(`! +!!")3c`#3"8)%F'pcG!!!!"`3cJ!!!!J!!3!@!!J!!!"$!#!!+J!"!&N!#J)"!!! +!("$1!*!&4!!P!!!!*M1B!!X"!*!%%K$2!*!&434`FQpM!!!!(""U!*!&4J#3"`% +"`J!"!!!!&K"V!*!&4`!Irrm!!!!@%'X!N!9)!"p!!*!%(""U!*!&5HCQ!*!'!F) +!!3!!!"`3DJ#3"8T#Mb6G)pF!!!(#!!%!!!!F%'S!N!9,c-bc-`#3"!(#!!%!!!! +@%'X!N!9-!#)c-`!!!"`3DJ#3"8fVK3#3"J(#!!%!!!!1%C8!N!F"!Y!!!!!3%C8 +!N!F#!&!!+!!!!"!4P3#3"`)!+!!S!!!!%"'9!*!(!J!8!"3!!!!3%C8!N!F#!!S +!#J!!!"!4P3#3"`)!&!"3!!!!&"'9!*!("!"i!"3!&!!8!!!!'"'9!*!("J"i!"3 +!&!!8!"3!&!!!!"34P3#3"`3!&!!8!"3!2!!!!"!4P3#3"`)!qJ"Z!!!!("$1!*! +((`!!!!2G'`!+!*!&("$1!*!((`!!!!2G'`!+!*!&#J!$"94TE@9c!!!!("$1!*! +((`!!!!2G'`!+!*!&("$1!*!((`!!!!2G'`!+!*!&("$1!*!((`!!!!2G'`!+!*! +&("$1!*!((`!!!!2G'`!+!*!&%K$0!!!!#!!#rrm!&!#3"4m!N!3F%-i!N!FI!!! +!!pdE!!S!N!8F%-i!N!FI!!!!!pdE!!S!N!8F%-i!N!FI!!!!!pdE!!S!N!8F%-i +!N!FI!!!!!pdE!!S!N!8i$k)!N!d#!%i!6`!!!!`!!`GbC@4'D@aX!!!!$3!$#'G +bBAP'D@aX!!!!$3!$#'GbB@4QD@aX!!!!$!!$"h*KC'CTE'`!!!!0!!-)F'pcG%C +TE'`!!!!+!!-&E'PZC6%!!!!+!!-&E'PZC6)!!!!*!!-%F(*[B`!!!!S!!`9#E'& +MD`!!!!J!!`0bC@3!!!!,!!-'Ch*KH6)e!!!!#J!$"9*PC$N`!!!!$`!$#NKeC6* +--M"6-c!!!!!2!!-+Bc)`E6-`H6%`-!!!!"!!!`YbC@3j-&4TER3b-!!!!!i!!`P +cF'pd8Q9N0MF!!!!d%6%!N!9N!*!,8!)k(#!'AK8f!*!&M!#-!!!!1"!&!*!&C!# +3#9%!!!3*!!%!N!X"!*!0("$1!*!((`!!!!2G'`!+!*!&1!qL!*!0!J"5!&-!!!! +d%6%!N!9N!*!,9!'Z(3B(*KKq!*!,0"%a!*!&C!#3#e8)0"ZH$Bi@lJ#3"B`!M!! +!!"`3cJ#3"bB!!!!$h4X!#J#3"4`3cJ#3"bB!!!!$h4X!#J!!rj!%$kS!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_2.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_2.0.hqx new file mode 100644 index 000000000..c887895d6 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/FreeHand_2.0.hqx @@ -0,0 +1,49 @@ +(This file must be converted with BinHex 4.0) +:"R4PFh4f-J"'5%3b4NK"-J%!!!!-)`#3"!Z(4NK%-J!*!!!H8"D!([!Ak!#3"9! +!Y!!!%2m!N!3",!%X!!S!!!"N!!)!N!Gl!*!&Y!!!"dGPEQ9bB@`!N"J'6'9dG'9 +b!*!ESjm!N2Xi%iN!!J!$!!3!"3!'!!F!#!!*!*!2@"1+!*!&%!#3&a!!#J!,!!` +!$3!1!!m!%!!4!")!%`!8!"8!&J!A!"J!'3!!!#J!"3!'!*!&'J!E!"`!(3!H!"m +!!!!m!!8!#`#3"5!!)3!L!#-!*!!P!#B!*`!S!#N!+J!!!"J!"3!#!*!&+`!X!!! +!%!!&!*!*+!!&!!B!N!8Y!#i!,`!`!$%!-J!!!"`!"3!$!*!&-`!d!$8!!!!i!!8 +!#J#3"6B!0`!i!$N!1J!l!$`!23!q!$m!!!!`&4d!N!9N!!!i!!B!N!3J!#X!N!3 +%ZK,+$l38(J!!!$!9(3"!!!!!C!!!B!!)!*!%)3!V!*!&2!e)"[i2-J!!!$`9'3# +3"@3!!$J!(!#3"%%!3J#3"!Ni%#)30JXL!!!!'J!r!!$b$[rrV+J!!&0B!!$b$[X +qjPJ$fXU%!*!(2"8C!*!&C!!!F!!`!*!%)J"#!*!%!Ii++!Ti"*)!N!Xi&4S!N!9 +N!!!1!$!!N!3M!%)!N!31L!Qk%rB&8!#3"cJ9'J#3"@3!!!B!$!#3"#3!3J#3""& +f%XS9QJq-!*!(1"8D!*!&C!!!$!!"J!!!!#3!3J#3"!hb(+`4BKV@!*!(2"8C!*! +&C!!!"J!B!*!%*J"#!*!%%Yi00"EZ#P!!N!Xm&4N!N!9N!!!'!!B!N!4$!%3!N!3 +4fK5J&V)61!#3#cJ9'J#3"@3!!'!!!J#3"#F!3J#3"!(U&Ti%9K4D!*!(2"8C!*! +&C!!!-!!#!*!%43"'!*!%"HB9p!L1&4J!N!@-!)`!!!!m&4N!N!9N!!!B!!)!N!3 +T!%)!N!3+[KAJ$I)8S!#3#c!9(3#3"@3!!'!!$!#3"#3!,!#3"!3"%*3'aJfp!!! +!1"2Y!*!&C!!!I!!$J!"(!!!%#3!"!*!,!3#3$6`9'3#3"@3!!'!!(!#3"#S!-`# +3"G)4-!EU#U!!N![q%qi!N!9N!!"J!!'!!*!(!J#3"!'[!LBGGJH4'r!!!!3*!!% +!N!X"!*!+!3#3"'!!!!#F!!!!hJ!J!#"rr3#3"8J!$!!!!!d!N!8#!"m!!!"k!"X +!&J!A!)8!!!!$!!!!!J!!!!%!!2rr!!!!%3!!rrB!LUl!!!NQh!!#f53!$3!!!"J +!!2rf!$#U`!!**Y`!!YNN!!d!!!!I!!$rpJ!`UX!!#5EF!!,C*!!0!!"TE##1G'& +TG#"eEQ8JCQpTF`eXD@jP)$)0E'PZC5!c$3!!!"i88J"*!*!(!3(#!!%!!!!H&&) +!5KQC'CNc-`!!!F)!!3!!!"i88`",Xc+c-V-b!"T-c!!!!"i88J"-rj!%!*!%!F) +!!3!!!"i88J"0rrm!N!B"`J!"!!!!(K46!%lrrmc,c-X!(M-c!!!!&K5e!%m!N!8 +F!*!&("66!&!!N!8D%5*%L"%L4)J!!!!F&,F!83#3"4`!!!U-!!)!!!!8&-N!8J# +3"("[Fh3!!!!H&,J!8`#3"a`!N!N@&,8!9!#3"4`!!3!!!"`8d`"9!*!&'c0Qc*N +cCXbC!!!!&K5e!&B!N!8H!*!&("5h!&F!N!8H!!!,i!!#!!!!("5h!&J!N!8I!"i ++M!!"!!!!4"6G!&N!N!9D!*!+e(S!!0F+!"i!+!,3"!N!!3#3#`%!N!dI&-S!@`# +3"'aTEQ8JF'pcG(0MFQP`G!!!!#)8YJ"F!*!&(`!j!!2G'`!+!*!(&K5e!*!((`# +3"4`8Y`#3"am!!!U-!!%!!!!F&0-!N!FIrj!)!!!!%"6*!*!*(K5i!*!*(`#3#83 +8h3#3%3%!!!!"!*!)"!N!!3#3#`%!N!dL&,B!N!FI!!!!!pdE!!S!N!FN&03!N!F +Irj!)!!2G'`!+!*!&%"6+!*!*%K9p!*!(!3,3!!!!&"9p!*!(!J"3!#J!!!!8&Ad +!N!F#!#J!+!!!!"39I3#3"`)!&!!8!!!!&"9p!*!(!J!+!!S!!!!8&Ad!N!F#!"3 +!8!!!!"J9I3#3"`3!H!!8!"3!&!!!!"`9I3#3"`B!H!!8!"3!&!!8!"3!!!!B&Ad +!N!F%!"3!&!!8!$`!!!!8&Ad!N!F#!2S!EJ!!!!`6L`!!!!F'B5"ZEh4P!!!!("5 +h!*!('`!!#Fi!!3!!!#)8YJ#3"a`!!!!$h4X!#J#3"a`8d`#3"adcCXbC-fE-Q3! +!!#)8YJ#3"ad!!!!$h4X!#J#3"a`8Y`#3"am!!![J!!)!!!!L&,B!N!FI!!!!!pd +E!!S!N!FJ%iS!N!83!*!A!J"G!&i!!!!3!!B(3Qp[DfeKEJ!!!!i!"J9#E'&MD`! +!!!m!"JCjC@aXEhF!!!!4!!B)G'PZG'GbBAN!!!!4!!B)H@9XE&4bG@8!!!!-!!B +$FQ9N!!!!$J!'"A*PC$)`!!!!%J!'#@CTE'`JG'PZG!!!!"!!"JG`BA4dCA*Z!!! +!%3!'#'GbB@4'D@aX!!!!%3!'#("[Fh4'D@aX!!!!%`!'#R*KC'PKE%CTE'`!!!! +@!!B0G'9cG%pfCA*3FQPZG!!!!"%!"JK`BA4dCA*Z-J!!!"!!"JGbC@4'D@aX!!! +!%J!'#A*PC$-`0%a[C`!!!"!!"JGbC@4(FQ&N!!!!$J!'"@GSCfKR!!!!)"1+!*! +&%!#3&`)!A`"J!!!!$J!'"A"[Fh3a!!!!$J!'"@aTEQ8b!!!!1"8D!*!&C!!!F!! +$J!!!!#!!B3#3"!1X(+`**"F#!*!(2"8C!*!&C!!!$!!$!*!%*3!V!*!%$')DAK- +D&XB!N!Xi&4S!N!9N!!"`!!1!!!!!)!"L!*!%!k`FV!NN&`)!N!Fm&4N!N!9N!!! +-!!-!N!3P!#X!N!3-BKTH%aS@aJ#3#am8bJ#3"QaTEQ8JF'pcG(0MFQP`G!!!!"m +8bJ#3"QaTEQ8JF'pcG(0MFQP`G2q3",[C!!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_1.0.hqx new file mode 100644 index 000000000..d5d2b7a24 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_1.0.hqx @@ -0,0 +1,134 @@ +(This file must be converted with BinHex 4.0) +:$A4PFh46D'&`C5jYC'B!4&*A4de%4P3"!!!!iC!!!*!%S,%!!J!!!!)#BJ*L!!! +!9"'Xr%#-B!"8%I3!!!"8$T`!9"&N!&314!"8$N3!!J#3"!G96Nj"689%6PEpmNM +R!aK#Tcmm!3ZTZLKI3UFr2!%0!&34p!!!!!%!N!6Irrrr!*!%lYIrr`#3"*h9[rm +b)N!!rZlrr`3!!)!!!!Ir!*!%prhrr`#3"2q3"!!)!!$lEErr!*!%lEDrrb!!!!$ +Yf[rr!*!K"3J*!BN+"`'-#JX"MJS-!C!!#Ji"NJJ5!C-!N"!"4!!+!9)!$!#3"%c +58bf@@8Dc!"%!#rq3#!!J!!3!N!8"!!%!N#X"!!%!N!8"!!%!!!!"!!!6!"85r`) +#!3!1!!8!!J#3"`%!!3!"!!!!!3%"!"!!3J%3!8)!N!3AJ")!!!%!-!!`!3&rrhr +rJ!'!!3!!!8!"3!!"!!,ljrrCrqF$f3#3'2r*!*!%rrm!!!!"!!%#3!(m!"3!!3S +!"43SC-L3"#L3##+3"&@3"!!!!!%!!3*!!I`!&!!"#J!&&#KNb*!%+*!))T!%9C! +%!3%!!`"N!3!"!!!"!!)!!3!)!!B!"`$J!"!"!*!&!3#3#!%!!3,`!N!!9!fd!!! +!!`#3"Z*k!!!!9!j`!*!&!`!#!!!!!J!#!"i!9!kJ!2!!9"(N!!8!"Iq3#!#3#4i +!9"(`!2!!9!kJ!!8!"Iq3#!#3#4i!9"))!2!!9"(`!!8!"Iq3#!#3#4i!N!A`!&3 +5#!!&!!ArN!J!N!X`!&34q!#3"!4!(!!,#8!!"X!$B!YN#I`!N!J&p!,k#JX)cJ" +8%@J%)!AJ!$!!9"(J!&342)4!(!!*#8!!#0`$B!V8"4!!N!J(i!-!#D!%J!"8%2! +"`!'!!%B!N!Li3"S!#3P!!!MF!f!+e!83#'!$!*!+B!$!!!B!!!!J!1!!!!&!!1! +!S!'!rk!"B2q!!)!!!!!J!!!!-!"8%9`!N!5%3"`!#3P!!!RB"RJ,C!L8!*!)#-! +&`!SJ"k!!9!rJ!@!"i!!S!*!)R%!D!!N*3!!*f!Ci#f3)P!M!"F!!N!J"B!(J!!! +!-!#3"9343)4!(!!*#8!!"X!'-!K-#I`!N!J'!!@!"f!)i!"8%HJ"B!0J!#J!9!r +i!*!%R%!D!!N*3!!'`!B`#!3)6!B!"B!!N!J")!(J!%B!N!98%Ibi3"S!#3P!!!E +N#%`)6!Rm"L!(B!#3#D!!`!!'!#!!S!$J!!!"3!$J!+!"J!!!!@!!!!$J!#!!S!# +3"8)!9"&J!*!%$%!L!!N*!!!!b!%2!9m#J!%(!2%!N!6rU`!!!$%"5!#3"4!$$!! +#!!!!!3!'!!&ZEh*YB@`J8!"#!&32Z!#3"!a!)J!*#3!!!0!$4!&R"*`"$J1!!*! +%rk[rC`!a!*N!N!9I!``"!J!!!!%!"J!"Bf9ZG'9b!!!!33"8%I`!N!3-3#)!#3P +!!!$J"4N"G`BS!4`&!*!&rk[rL!!a!(N!!!"j!!!$$2m#!!!!!3!&!!&bD@GSG!! +!!$)!9"(X!*!%4%!L!!N*!!!"q!%J!IJ$'!(!!3#3$1!!!3#3"J(!!$)!9!mS!*! +%5%!L!!N*!!!"q!3i!aJ%1!(!!m!!N!Q!!!!!!3#3"!%!N!3b!&321!#3"%K!)J! +*#3!!!IJ&a!,d"F3"`!8J!*!*F!!!!!%!i!#3"c)!9!md!*!%4%!L!!N*!!!"q!D +F!IJ(i!(!"H!!N!Z3!!!"!!!")!#3"6)!9!mN!*!%1%!L#!N*38S$T`%@!r!#Y3- +J!3#3#N!!X!!"!*!&J!&J!$)!9!m8!*!%1%!L!!N*3!!$K!-m""3%A!-J!Z!!N!P +!!)!!!3#!!*!%!3!!-J"8%d`!N!3i3#)!#3N!!!1%")!%J!8d!b!%!*!+F!"3!!% +!!!#J!1!!!!!b!&32'!#3"$K!)K!*#8!!!f!&S!4F"J`$!!8!N!T`!$!!!3#3"H! +!B!!b!&32(!#3"$K!)J!*#3!!!i3'9!4F"X!$)!@J!*!*B!!`!!%!`!"J!*!&-J" +8$``!N!3i3#)J#3NK-306"Nm%4!LI!`!'B!&8$a!!N!9J!%!!!3$!!*!&J!!D!*! ++!``"!3!!!iF'6`3A#*m$"!!b!&32#!#3"$K!)J!*#3!!!m`)"!2`#,J$B!FJ!*! +*%!"3!!%!)!#J!*!&-J"8$`3!N!3i3#)!#3N!!!2-#8J%&!SJ!f!)3!#3#5!!B!! +"!!!!`!"!!!!!+!"8$`#3"44!)J!*#d!!"+)"a!81!T`%&J'2!*!*B!$!!#J!9!l +m!*!%&%!L!!N*!!!%T!,d"4!$U!3J!U!!N!PJ!+!!+!"8$[J!N!383#)!#3P"$J5 +N")!&@!6X"%!$i!#3#@!!S!!S!&31p!#3""4!)J!*#3&H")d&r!9+"[-%)!9J!*! +*J!$!!#`!9!lX!*!%'%!L!!N*!!!&S!&S"P3#L!8!!8!!N!QJ!3!!8!"3!#`!9!m +J!*!%'%!L!!N*!!!&S!-m"P3%A!8!!Z!!N!QJ!3!!8!"3!#`!9!lS!*!%'%!D!)N +*39i&CJ8""N8''J6J")!!N!QJ!1!!8!"3!#`!9!lN!*!%'%!L!)N*!93&3`EA"N3 +)@!6J"L!!N!Q!!8!!3!"!!$!!9!lF!*!%+%#+!!N*8!!'S`"3#%8$%3C!!@!"9!l +JrkErjJ%D!9S!N!A!!8!!'J#3#6)$$2m"!!!(,!"3"l`#@!-%!$J!9!lB!*!%-%! +D!)N*3!!'S!+-#@J&9!FJ!i!!N!6qa2l%!6`"2!#'rVi!N!AH!1B"2!!X!$B!9!l +8!*!%3%!D!!N*!!!(#!U`"cm,(`C!#B!!N!NB!$%!!J!!!'-!-3#3"@-"0J"8$Y! +!N!4!3"S!#3P#!!Fh#RF)J`af"Q-*3!#3#CS!m3"#!)!!B`#1!(-!R!#%!+N!P!# +d!+8![3#f!-N!a`$D!0S!l3$Y!2B!rJ$V!3X!e3%A!,m"*3#S!6J!N3&0!)!"BJ" +p!AJ!JJ'0!)8"SJ#&!EB!JJ(*!(X"e!"V!G!!93(%!%)"Y!!b!C`!)`&r!"F"C3! +1!8i!"`%i!!S"*`!M!4i!4`%D!'N"&J#*!4F!U!%C!-3"&`$F!3i!m3$r!38!i!% +A!+%"+!"3!5i!&`%I!!i""3!F!1m!+`$N!$d!h!"3!0-!DJ$(!*3!Z3$'!,!!mJ# +b!43!Z3%a!,m"2J$%!5d!b3%,!-8!k`#[!-i!N3#a!)!!QJ#1!)i!UJ#(!,S!I`# +[!(B!Q!"Y!)!!B`#b!&31c!#3"%"!'J!*#8+d#(i+JJR($()(JJP!!*!*R!$c!#% +!J!"M!*`!K!#d!+8!b3$(!1d!l3$V!3X![`%P!*%"63"p!AJ!K3'L!))"b3"V!G! +!3J'd!#-"I`!1!8i!#J%R!%F"'J#*!4F!a!%A!2%!r`%A!+%",J!A!38!(!$N!$d +!d`"U!,N!aJ#b!43![`%q!-N"#`#[!-i!J!#D!+S!K`#[!(B!J!"M!#`!9!l)!*! +%'%!D!!N*!!!,V!-m$$`&%!TJ!Z!!N!Q!!D!!3!"!!$!!9!l%!*!%+%!D!!N*!!! +,3`@4$+8'm`TJ"3#3"IqMrr-!h3%Y!*!&J!%J!$J!9!l`!*!%-%!D!!N*!!!,L!H +B$+3*"!T!"X!!N!6qV2kX!93"9!#+rq)!N!3"!!$J!)!"J!!S!&31`!#3""a!'J! +*#3!!#iJ*f!aJ#f3+3!M!!*!*`!&J!$d!9!kB!*!%$%!L!!N*3!!+a`Zq#ei-$`R +U#VJ!N!6rUrqi!$%!N!J$$2m#!!!!!3!"!!&KL'%!6J"8$V3!N!3-3#3!#3Y"$JR +8"+X3mJBT#im('J#3"2q@qRi!kJ$5!!$pU"-!&4)"!J)"!!%!%J!"58`JMP4"593 +J98j&)%C2590#60m!0J"8$V`!N!4!3"`!#3P!!!Rr!(m,(`$m#1-!3!#3#B!!D!! +#!3!!S!!!!$%"!!#J!$)!9!ki!*!%1%!F3!N*!!!**!%J#C!!![3))!%!N!S`!0! +!!3"J!*!%!D!!-!"8$N3!N!3%3"`!#`Y!!!5*#$m*,3lErJ`%6!#3"!Ad![S+#`M +1!&31V!3J"H!!-!"8$U3!N!5%3"`!#3P!!!DP#$m)R3R[!*!)"q!$!!QJ")!!9!k +`!F!"J!"'!*!)Z%!D!!N*3!!'T3Jr#*d*l`KJ!`#3#Q!!`!!'!!!!)!$J!!!"3!$ +J!+!"J2qJ!@$rJ!#!!!!!)!!!!$!!9"(F!*!%K%!F!!N*3!!(S3YA#5d0F`#3#!M +!"F!+)!HJ!&31U!&J!H!!+!#3#*a!'J!*#8!!"k%,9`NY$A-)`!A!!*!)!@!"i!! +!!$!!N!L%3"`!#3P!!!5*#`m'&3lE!*!)"J!&J!GJ#1!!9"$8!@!$B!!S!&35!*! +&R%!D!!N*3!!%L3X2"Fd0+`B!"B!!N!J")!(J!%B!N!Li3"S!#3P!!!5Y$5X'&3l +E"L!(B!#3#D!!`!!'!#!!S!$J!!!"3!$J!+!"J!!!!@!!!!$J!#!!S!#3"6!!N!L +)3!!!#`X!N!B@J"(r!!!!pJ#3"[m+%pJ1k3"8$N!6f!rI!$i!9!ii!&314-a!!!! +,#`#3"J&3%Im!!2m+!*!)!5J2h`"8$M`!!3#3"5S#3!#3"5S#3!!q!&31-!"8$N$ +-3!!!#`X!!!&3!!!#S"(r!5Mr#J#3#!%S$pm!9!id!!%!+J!!!&3#3!!U!!!!9!* +!!$i!9!iS!&311-a!!!!,#`!!!Tm!!!2`%Im#82m+!*!)!5N2h`"8$L`!!3"8!!! +!IJ*!!&3!!!"q!N!!2J"8$L!!9!i`c%!!!!X,!!!$m!!!"8!4r`0jr`S!N!J"+!r +I!&31*!!"!(i!!!#S!N!!IJ!!!+J#3!!q!&31'!"8$LM-3!!!#`X!!!9!!!!'N!! +4r`5Kr`S!N!J"+!rI!&31(!!"!+J!!!$5!N!!U!!!!0)#3!!q!&31%!"8$L$-3!! +!#`X!!!D2!!!(i"(r"FRr#J#3#!%T$pm!9!i8!!%!dJ!!!2`#3!$5!!!!r!*!!$i +!9!i)!&31'-a!!!!,#`!!"q!!!!N`%Im'm[m+!*!)!5J2h`"8$J`!!3$m!!!"*J* +!!2`!!!%Q!N!!2J"8$J!!9!i3c%!!!!X,!!!*-!!!#S!4r`JDr`S!N!J"+!rI!&3 +1"!!"!5B!!!&3!N!"*J!!!9!#3!!q!&30q!"8$JM-3!!!#`X!!!Tr!!!,d"(r#8, +r#J#3#!%T$pm!9!hm!!%"8!!!!AS#3!&3!!!"HJ*!!$i!9!h`!&31!-a!!!!,#`! +!#p!!!!dJ%Im+Drm+!*!)!5J2h`"8$I3!!3&k!!!"T!*!!AS!!!'N!N!!2J"8$HJ +!9!hic%!!!!X,!!!0)!!!$R!4r`Z6r`S!N!J"+!rI!&30l!!"!D3!!!(1!N!"T!! +!!Fi#3!!q!&30i!"8$I$-3!!!#`X!!!j[!!!2`"(r$,[r#J#3#!%T$pm!9!hN!!% +"cJ!!!IJ#3!(1!!!"q!*!!$i!9!hB!&30k-a!!!!,#`!!$m!!!"%3%Im0j2m+!*! +)!5J2h`"8$G`!!3(i!!!#)J*!!IJ!!!)L!N!!2J"8$G!!9!hJc%!!!!X,!!!4%!! +!%Q!4r`m-r`S!N!J"+!rI!&30e!!"!L)!!!*-!N!#)J!!!N`#3!!q!&30b!"8$GM +-3!!!#`X!!"*I!!!6X"(r%$6r#J#3#!%T$pm!9!h-!!%#6!!!!RB#3!*-!!!#GJ* +!!$i!9!h!!&30d-a!!!!,#`!!%l!!!"8!%Im4AIm+!*!)!5J2h`"8$F3!!3*f!!! +#S!*!!RB!!!+J!N!!2J"8$EJ!9!h)c%!!!!X,!!!9!!!!&P!4ra+&r`S!N!J"+!r +I!&30[!!"!U!!!!,+!N!#S!!!!XS#3!!q!*!&9!h!c%!!!!X,!!!@6`!!&S!4ra1 +Yr`S!N!NV$pm!9!fd!!%#bJ!!!Y!#3!,+!!!#d!*!!*!)!F`!9!fm!!!!9!fd!!% +!!)"9ccJ!5!,+!!!#d!*!!*$r!*#a#q`!9!h%!!!!9!fm!!%!!)"9`[`!5!+J!!! +#bJ*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!h-!!! +!9!h%!!%!!)"9YX!!5!*f!!!#S!*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$E#q`!9!h8!!!!9!h-!!%!!)"9US3!5!*-!!!#GJ*!!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!hF!!!!9!h8!!%!!)"9RNJ +!5!)L!!!#6!*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q` +!9!hN!!!!9!hF!!%!!)"9NJ`!5!(i!!!#)J*!!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$E#q`!9!hX!!!!9!hN!!%!!)"9KG!!5!(1!!!"q!*!!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!hd!!!!9!hX!!% +!!)"9HC3!5!'N!!!"cJ*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$E#q`!9!hm!!!!9!hd!!%!!)"9E9J!5!&k!!!"T!*!!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!i%!!!!9!hm!!%!!)"9B4`!5!&3!!! +"HJ*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!i-!!! +!9!i%!!%!!)"991!!5!%Q!!!"8!*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$E#q`!9!i83UF!9!i-!!%!!)"95+3!5!$m!!!"*J*!!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!iF6Ud!9!i8!!%!!)"92'J +!5!$5!!!!r!*!!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q` +!9!iN-#i!9!iF!!%!!)"9-#`!5!#S!!!!dJ*!!*$r!*$r!*$r!*$r!*$r!*$r!*$ +r!*$r!*$r!*$r!*$r!*$E#q`!9!iX!!%!9!iN!!%!!)"9)r!!5!"q!!!!U!*!!*$ +r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$r!*$E#q`!9!id)&m!9!iX!!% +!!)"9&l3!5!"8!!!!IJ*!!*!'(J#3"Ai!N%%H!*!%!I`!N%%H!*!%!r!!N%%H!*! +%"q!!N%%H!*!%(m!!N%%H!*!%2`#33Ki!N!6q!*"#(J!!!!(m!*"#(J!!!!I`!*" +#(J!!!"rJ!*"#(J!!!$q!!*"#(J!!!(m!N%-H!!!!r!#33ai!!!(`!*"$(J!!"q! +!N%-H!!!2`!#33ai!!"q!!*"$(J!!2`#34"i!!2`!N%3H!!2i!*"%(J!2m!#34"i +!2q!!N%3H!(q!!*"%(J(q!*"&(JIi!*"&(KrJ!*"&(Rr!!*"&(rm!N%BIr!#34Kr +`!*"'$m!!N2m!N2m!N2m!N&X,l!"8$Ma#E`"8$M3!!3!!J&8,H!")!#S!!!"8!N! +!N!BH!*"((J#34ai!N%FH!*"((J#34ai!N%FH!*"((J#34ai!N%FH!*"((J#34ai +!N%FH!*"((J#34ai!N%FH!!!Irrrri!#33"rrN!Em!*"!(rq3"`#33"rrN!IJ!*! +r(rrrm!!!!$ri!*!r(Mr!!*!%"ri!N$mH"q!!N!3"r`#32ai"m!#3"6q!!*!q(J$ +`!*!&$i!!N$iH"r!!N!8(`!#32Ki2m!#3"32!!*!q(Jr`!*!&!m!!N$iH"q!!N!8 +$`!#32Ki!N!F$`!#32Ki!N!F$`!#32Ki!N!F(`!#32Ki!N!F2J!#32Ki!N!FI!*! +r(J#3"hi!N$mH!*!'!I`!N$mH!*!'"rJ!N$mH!*!'2r!!N$mH!*!&!Ir!!*!r(J# +3"32r!*"!(J#3"3Im!*"!(J#3"4rJ!*"!(J#3"6m!N$X,l!#3"2rr!&312!!"!!# +!92mm!%J!N!8U!N!!N2m!N2m!N2m!N2m!N2m!N2m!N-`1!*"((`#34am!N%FH!*" +((J#34ai!N%FH!*"((J#34ai!N%FH!*"((J#34ai!N%FH!*"((J#34ai!N%FH!*" +((J#34ai!N%3H!&32M!!4!&31F#,B!!"-dP-YPPP'Xdc58ff@@8Dc!"i!N!8$!&3 +2M!&T!!!"!J3)%#"!J!%#4'J`-ND'!!!!H!!!!''dP!"KY)`!BE5)rrm!BE5FUP@ +U9DT9UP8!!!!JEh"d)'ecC`#3"!YQEh)JC@4TG'ecC`#3"`%F!'%RQ!!)!*!)rrf +fh`4@D@9h#PT[EfdJ5@iJ0&J!-3!!#PT[EfdJ5@iJ-PJ!-J!!#eT[5DN!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_5.5.drw b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_5.5.drw new file mode 100644 index 000000000..5bb15fc08 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraft_5.5.drw differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_0.hqx new file mode 100644 index 000000000..5265ebd9a --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_0.hqx @@ -0,0 +1,9 @@ +(This file must be converted with BinHex 4.0) +:"h4PFh3`,MN!4&*A4de%8PF"!!!!!VB!N!5f98e%!!3!N!82!!!!5!")!*!%![! +#32rarqi$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!! +"*`m!!3#3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3%!!J#3#8J!!!")!*!'!J-#!!0 +X!!%$!3%!!!%"!!(j!Y!#3!,3!N!#d!*!!*!&!3%""J!"!*$r!*"#"!!!!!)$!J! +!'`!!!#d!!!"M!!!!K`!!"`!!!!)$!3!!B`!!!%J!!!#p!!!"RJ!!!3i!@JJ!!!! +#!`%!N!4Z!#S!*3!!!%J!!!$'!!!!fJ!!!!J!aJ!!!&S!!!(lr[MlpI[jq[Vrq3$ +f#HJ8k4$`$rB2p`[q"`!&"J8'"`J%#!-(!Jd"$3!1r42m$rm*!!Elr[hjr[)&p!h +i#[d)rJAr!rS!j2RIrI2pmrllr!d!N!3#!`)!HJ8!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_1.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_1.hqx new file mode 100644 index 000000000..54ed70ad0 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_1.hqx @@ -0,0 +1,103 @@ +(This file must be converted with BinHex 4.0) +:"h4PFh3a,MF!4&*A4de%8PF"!!!!4'd!N!6RFN459dG04!!'!!m!!!")!%J!N!3 +#m!*!rr(rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J! +!!!%R$`!"!*!1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3#3#8J!!!")!*!'!J-#!!0 +X!!%$!3%!!!%"!!(j!Y!#3!,3!N!#d!*!!*!&!3%""J!"!*!5$J!8!!"%63#3#!' +j!!!#2!!!+YF!)5V0!!i!!!!@"pFQF#Cb#lF(d!#3r`#3"3F!!!!#!`%!!'-!!!" +)!!!![3!!!Ci!!!%1!&S)!!!!!J-"!*!%EJ!U!#8!!!")!!!!aJ!!!0S!!!!)!-B +!!!"D!!!"qrliqrAlqIVkrrN!pJRS&1N3m!rf$rF,rJF!"3B&"JF)"!J$"`)0!3d +!$[d6r!rr#3!'qrlpqIlb"I30q!Vp#2i&r`2k!16jhrhcrI2qqr`0!`!!!!)$!3! +"$J!!!(i!!!#d!!!!f!!!#3!!!!)$!3#3"$`!"3"D!!!!r!!!!,d!!!&a!!!!#3# +p!!!")!!!!&S!!!$m!!!!@J!!!38!!!"q!!!"F3!!!+X!!!&@!!!"!!!!!J-#!!" +L!(`"!3-"!3!!%3$D!&B!k!#UD@`JMR4KDA3JG@jP)'C[DA-)!!!!!J-"!*!%*!! +&!3%!!!!f!!!""`!!!$X!!!%)!38!!!!f!!!&!2[m!!8"!3F!!!!#!`%!!-B!!2r +6!!!"$J!!!'-!!!"D!&S(!!!!!J-"!!$U!!!!@J!!!5!!!!%J!!!!@J"D!`!!!!) +$!3!![3!!!!N!!!!5!!!#0`!!#3!!!!)$!3#3"$`!"3!5!!!!#3!!!EN!!!)6!!! +!#3!5!!!!#3!!!EN!!!&k!!!![3!!!K-!!!"e!!!"X!!!!*N!!!'9!!!$!!!!!J- +#!!"q!!!!,3!!!(i!!!"4!!!+!!!!!J-"!*!*!E8!!!)m!!!!!`!&!!!$0!"L!-J +!BJ$!#3!!!!)$!3#3"$`!"3#d!!!!*!!!!-B!!!!Y!!!!#3#d!!!!*!!!!,3!!!! +Y!!!!aJ!!!#d!!!#p!!!!,3!!!,d!!!!N!!!+!!!!!J-"!!!E!!!!,3!!!3i!!!& +a!!!!!J!#!!!!A!"L!&J!BJ$N"!!!!!)$!J!!'`!!!#d!!!"M!!!!K`!!"3!!!!) +$!J-!Q3!!!+X!!!%1!!!"F3#3"J)$!J!)!!!!!J-"!!!!!JS!q!#3#!'e!!!#2!! +!!!J!SJ!!!"X!!!2kq2hkr[Vpq[lmp!$R!2)"k`,j![S(rJJ#$`34"Ji$$`%3!"$ +j$r8)q3Rk#Im*!!N!"3!&q`(l!2N,!a)'&3B1"!S%$J-(!!J!"r`)rJRr#`!,!") +#%J)-!!m!$2`(qJ2k#r8+pJVi#I`)!!8!"3!)#J-(!JF$"J-("!8&"JB&#JJ+"JB +&"J8&"3-'"!8&!`B""J%#%[m8r"Eq'2m0r`N!"J%&!`Iq"rd'r3Ep#r`-rJcr$2m +1!!Rr"`!&rJEl#288pa$f&[d(r!F!qr[qq3$f!2-$m3A["rF(q3Al"2S%qJ$h!28 +!m`$X!26rp[Rkqr[mqrhkrrIrmI[Zp2Abmqclq2[kq[ck!2J!q`6k"IN&qJ2k!rN +'qJEl"IJ(qJIl"ri'r3Elq[X!rIRrqJ$k!2F!qJ$jq2lir[6klrAcpI6eqIRkq[c +l!rB*l`Vb#I-*q!Rm$3!4!#!*)3`P#LX1*!8S!K`!&2S2p!c[$1`-l!l[#23+p3A +h!rJ"p[Eam2$XpqAiirhS!1d)m!hc$282m"Mh%rS4qad!&J-8%"N1$!N'"`3'!Jh +l'[)CpK,m#[i(r`3*q`cf$r%4m!lZ$1N*j`AQ!q8!jrlSqZMfm[Raq2(dq2Elm2V +K!,`3`JEP#1-&l`(j!38"#!B&"J!%"Ilr!*!%!J-#!!X!!!!#!`%!!')!f!!M!(B +"'`'c!"X!!!!r!!!"%`!!!A`!!)"MAqJ!+J!M!(!"'`(!!*#c3!#3r`#3r`#3r`# +3r`#3F`(rN"6!!*!8!Iq3&-!!N"3"rj!8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj! +8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj!8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj! +8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj!8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj! +8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj!8`!#3&!(rN"6!!*!8!Iq3&-!!N"3"rj! +8`!#3&!(rN"6!!*!8!Iq3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6!!*!4J!!!!Iq +3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6!!*!4J!!!!Iq3&-!!N"'!!!!"rj!8`!# +3%B!!!!(rN"6!!*!4J!!!!Iq3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6!!*!4J!! +!!Iq3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6!!*!4J!!!!Iq3&-!!N"'!!!!"rj! +8`!#3%B!!!!(rN"6!!*!4J!!!!Iq3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6!!*! +4J!!!!Iq3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6!!*!4J!!!!Iq3&-!!N"'!!!! +"rj!8`!#3%B!!!!(rN"6!!*!4J!!!!Iq3&-!!N"'!!!!"rj!8`!#3%B!!!!(rN"6 +!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6 +!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6 +!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6!!*!3!3!!!!(rN"6 +!!*!3!3!!!!(rN"6!!*!3!J!!!!(rN"6!!*!3!J!!!!(rN"6!!*!3!J!!!!(rN"6 +!!*!3!J!!!!(rN"6!!*!3!J!!!!(rN"6!!*!3!J!!!!(rN"6!!*!3!J!!!!(rN"6 +!!*!3!J2rm!(rN"6!!*!3![`!$m(rN"6!!*!3$`!!!$hrN"6!!*!31J!!!!IrN"6 +!!*!2!F3!!!!"rj!8`!#3$`B%!!!!!Iq3&-!!N!mB"!!!!!(rN"6!!*!2B!3!!!! +"rj!8`!#3$J'!"!!!!!(rN"6!!*!1!`!%!!!!!Iq3&-!!N!i-!!3!!!!"rj!8`!# +3$KJ!"!!!!!(rN"6!!*!1)!!%!!!!!Iq3&-!!N!j!!!J!!!!"rj!8`!#3$3'!!!J +!!!!"rj!8`!#3$3-!!!J!!!!"rj!8`!#3$3B!!!J!!!!"rj!8`!#3$3`!!!J!!!! +"rj!8`!#3$3J!!!J!!!!"rj!8`!#3$4!!!!J!!!!"rj!8`!#3$5!!!!J!!!!"rj! +8`!#3$8!!!!J!!!!"rj!8`!#3$F!!!!J!!!!"rj!8`!#3$B!!!!J!!!!"rj!8`!# +3$!%!!!!)!!!!!Iq3&-!!N!`#!!!!#!!!!!(rN"6!!*!-!J!!!!J!!!!"rj!8`!# +3$!3!!!!)!!!!!Iq3&-!!N!`%!!!!%!!!!!(rN"6!!*!-#!!!!"!!!!!"rj!8`!# +3$"J!!!!3!!!!!Iq3&-!!N!`3!!!!%!!!!!(rN"6!!*!-%!!!!"!!!!!"rj!8`!# +3$#!!!!!3!!!!!Iq3&-!!N!`J!!!!%!!!!!(rN"6!!*!-3!!!!"!!!!!"rj!8`!# +3$%!!!!!3!!!!!Iq3&-!!N!a!!!!!%!!!!!(rN"6!!*!-J!!!!"!!!!!"rj!8`!# +3$)!!!!!3!!!!!rq3&-!!N!b!!!!!%!!!!!2rN"6!!*!,!B!!!!!3!!!!!rq3&-! +!N!X"!*!%%!!!!!2rN"6!!*!,!3#3""!!!!!$rj!8`!#3#`%!N!33!!!!"!#3"#! +!!!!"!*!A!3#3""!!!!!%!*!%)!!!!!%!N"F"!*!%%!!!!!3!N!3J!!!!!3#3&`) +!N!33!!!!"!#3""!!!!!"!*!A!J#3""!!!!!%!*!%%!!!!!%!N"F#!*!%%!!!!!J +!N!33!!!!!3#3&`)!N!33!!!!#!#3""!!!!!"!*!A!J#3""!!!!!)!*!%%!!!!!% +!N"F#!*!%%!!!!!J!N!33!!!!!3#3&`)!N!33!!!!#!#3""!!!!!"!*!A!J#3""! +!!!!3!*!%%!!!!!)!N"F#!*!%%!!!!"!!N!33!!!!!J#3&`)!N!3)!!!!%!#3""! +!!!!#!*!A!J#3"!3!!!!3!*!%%!!!!!3!N"F#!*!%!J!!!"!!N!33!!!!"!#3&`) +!N!3"!!!!)!#3""!!!!!%!*!A!J#3"!%!!!!J!*!%%!!!!!J!N"F"!*!&J!!!)!# +3"#!!!!!)!*!A!3#3"8!!!#!!N!3J!!!!#!#3&`%!N!9!!!!J!*!%)!!!!"!!N"F +"!*!&)!!!3!#3"#!!!!!3!*!A!3#3"4!!!%!!N!3J!!!!)!#3&`'!!*!%#!!!3!# +3"'!!!!!J!*!BJ!#3"!3!!%!!N!4!!!!!3!#3')!!N!3#!!"!!*!%3!!!!%!!N"L +!!*!%!3!!J!#3"%!!!!#!!*!B3!#3"B!!J!#3")!!!!#!!*!B3!#3"8!!J!#3")! +!!!%!N"P!!*!&)!#!!*!%J!!!!3#3'5!!N!83!)!!!!!"!!!!!J#3'5!!N!8)!)! +!!!!"!!!!"!#3'4!!N!8%!)!!!!!#!!!!"!#3'4!!N!8#!)!!!!!#!!!!#!#3'4J +!N!8"!)!!!!!'!!!!#!#3'3J!N!D!3!!!!!3!!!!3!*!C"!#3"N"!!!!!#!!!!#! +!N"N%!*!'-#!!!!!)!!!!)!#3'3)!N!B))!!!!"!!!!"!!*!C!J#3"J33!!!!%!! +!!)!!N"N"!*!'!JJ!!!!J!!!"!*!EJ!#3"3'%!!!!3!!!!J#3'm!!N!C$!!!!`!! +!"!#3'd!!N!BJi!!!J!!!'!#3'b!!N!B3(rq3"H!!N"X3!*!'$!!!!J#3(`J!N!B +#!!!%!*!I$!#3"J%!!!`!N"m'!*!(J!!B!*!I!`#3"f!!-!#3(`'!!*!)B!#3)%! +!N!L!!*!J)!#3"`%!N#%B!*!("J#3)3`!N!F-!*!K!`#3"c!!N#%"J!#3"Q!!N#* +J!*!&!B!!N#)B!*!&"J#3)`B!N!8B!*!M!F!!N!6J!*!N1!!!!!F!N#82!!!!2!# +3*[`!$m!!N#B$rr!!N2m!N2m!N2m!N2m!N2m!N,B+!!!!!J-"!3#d!!!!,3!!!8` +!!!%d!!!!!3!"!!!8J!"L!"J!BJ!B#`!!!!)$!3!!BJ!N!*!&Q!%(!,3!!!!Y!!! +"6!!!!63!!)"MYX3!)J#3"CJ"%!#3)Im!N#(r!*$+!Im!N2m!N2m!N!3Irj!2m!# +3%ArrN!rm!*!4rj!3rJ#3%!(rN"%!N"!$rj!4J!#3$`2rN"'!!*!2"rq3%F!!N!m +(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m +(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m +(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m +(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m +(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!+!Im!!!!(rj! +4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3#rm!!!!(rj!4`!#3$`IrN"(!!*! +2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!#3#J%!N!3(rj! +4`!#3#J(r!!!!"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!m(rj!4`!# +3$`IrN"(!!*!+!Im!!!!(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N![r!!!!"rq3%F! +!N!m(rj!4`!#3#J(r!!!!"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2"rq3%F!!N!S +"r`!!!!IrN"(!!*!2"rq3%F!!N!S"r`!!!!IrN"(!!*!+!Im!!!!(rj!4`!#3$`I +rN"(!!*!2"rq3%F!!N!m(rj!4`!#3#J(r!!!!"rq3%F!!N!m(rj!4`!#3$`IrN"( +!!*!2"rq3%F!!N!m(rj!4`!#3#J%!N!3(rj!4`!#3#J%!N!3(rj!4`!#3$`IrN"( +!!*!2"rq3%F!!N!m(rj!4`!#3$`IrN"(!!*!2!rq3%B!!N![r!!!!!rq3%B!!N!S +"r`!!!!(rN"%!N"(rN"$q!*!4Irq3$r`!N"%Irj!2m!#3r`#32J(r!*$r!*$r!*$ +r!*$r!*"U!J-#!*!&!J-#!,%'!!!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_II.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_II.hqx new file mode 100644 index 000000000..01185c149 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_II.hqx @@ -0,0 +1,110 @@ +(This file must be converted with BinHex 4.0) +:#R0TEA"XC5jYC()!4&*A4de%8%`"!!!!%!!!!!fC'k4%8PG(4$)!!3!2!!!"D!& +S!*!%$VJ,32qerkB2,3ZDB`)&+!2m!3!!!!&S!@J!N!31Z!Y!!!%&!!"N!!%!!!! +"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3ZD!!J!N!iC!3!#!(J!5!!!!%J!N!J +"!3#3E`-!"J!'!!%!"J!'!$8!1`!)!*!*!`!$!!!!!3!!!!B!N!PdJ!!!2S!!!3H +!!!'MJ!!!G)!!!$k!!!%(J!!"Si!!N!3'!!!!!`!!J!!!!)!!!BQ!!!)PJ!!!G)! +!!$k!!!%(J!!"Si!!N!3'!!!!!`!!J!!!!)!!!BQ!!!)PJ!!!G)!!!$k!!!%(J!! +"Si!!N!53!!!!!%J!!!#S!!!!9!!!!")!N"B"J!!!!"F!!!%N!*!+!C!!!!!"3!# +3%`9!)J#3"MqmFFFFFFFF!!JJ!*!%!8!'V9UeDY@V2pD6k6k6k6m!#L%$!!!!!6r +i!*!'2q99N!B!$#!"!!!!!6rL*%L4)N5*2r`iiiiiiii!!5%$!!!!!8!Fc*!&c6r +"aaaaaaab!"3J!*!%!6r1Z&(VK4ki3"#UN!@V!5`J!*!%"!!"!!!!!3!"!!!!!3! +#!!!!!J!#!!!!!3!%!!!!"!!%!!!!!3!'!!!!"J!'!!!!!3!)!!!!#!!)!!!!!3! ++!!!!#J!+!!!!!3!*!!!!#3#3&3%!'`!!!!N!N"8"!")!!!!5!*!9!3!f!!!!%J# +3&3%!5!!!!!N!!!!*!!!!#3#3$3%!5!!!!!N!!!!*!!!!#3!!!!N!!!!*!*!&!3! +"!!`!!!!%!*!&!3!#!!`!!!!$!*!&!3!$!!B!!!!'!*!&!3!%!!`!!!!&!*!&!3! +&!!8!!!!&!*!&!3!'!!-!!!!$!!!!!`!3!!`!!`!!!!`!N!N#!*!(!J#3#`,rN!3 +!N!d*!!!!C`!!!"N!!!#X!*!%J!!!!)!!!BQ!!!)PJ!#3$JN!!!"R!!!!'3!!!+` +!N!5!!!!!J!!"LB!!!L@!!!"I1Z!!!!"!!!!!$)!!!!3!!!!(!!!!!3#3#`(rN!3 +!N!edJ!!!2S!!!3H!!!'MJ!!!2`!!!(`!!!"2!!!!U!#3$h5!!!!qJ!!""i!!!D1 +!!!!r!!!!I!!!!%m!!!#S!!!!AcPd!!!!)!!!!!J!!!!&!!!!$`!!!!-!N!X$rj! +%!!!!!`!!!!%!!!!$!(5!!!!qJ!!""i!!!D1!!!"dJ!!!2S!!!3H!!!'MJ!#3"!- +!!!!"!!!!!`"dJ!!!2S!!!3H!!!'MJ!!!G)!!!$k!!!%(J!!"Si!!!&mk'!!!!'! +!!!!3"QeKFh4PFJGcE'PNC5!a"h0XD@4P)$)!!!%)!!!!&!!!!!`!!!!%!!!!&!# +3pa`!!!!"!!!!#!!!!!%!!!!)!!!!!3!!!!J!!!%)!!!!&!!!!!3!!!!`!!!!A!# +3piJ!!!!"!!!!,!!!!!J!N!8+!!%!!3!!!!S!N!8,rrm!%!!-!"!!$!#3"3%!!!! +X!!!!$!#3"3F!!3!"!!!!"`#3"3Mrr`!3!!`!%!!-!*!&!3!!!#`!!!!3!*!&"`! +"!!%!!!!(!*!rr!"!!$!!3!!`!N!3"#!!!!"3!!!!%!!!!'!!!!#J!N2Fi!!! +!!3!!!"4dD'8JE@&cG'9b!"3!!!!"!!!!%(0XD@4P)$%-!!!!!3!!!""cE'PNC5! +b!!!!J!!!!)!!!BQ!!!)PJ!!!!`%"!!B!$`#3#3N!!!"R!!!!'3!!!+`!!%!"!3# +3#!J!N!8r!!!!I!!!!%m!!!#S!!"!!3#3#3`!N!@&J!!!2S!!!3H!!!%QJ!!)!`% +"!!B!$`#3#A5!!!#GJ!!!qB!!!D1!!!J&!3%!"J!+!*!*R!!!!0i!!!#X!!!"#J! +!5!%!N!8&!!!!%!#3"!+3$33#N"X!!!!"!!J%!T!6"!+3#`3#N"-%!T!,!!!!!3! ++"!)#!J3#N!8%!J)#"!)%!J)#"!+3"33#!J)%!J3#!J)%!T!&"!)#!J3#"!)#!J3 +#N!8%!J)#"!)!!!!"!$`#"!)%!J3#"!3#"!)%!J3#!J3#"!)%!J3%!J3#"!)%!J) +%!J3#"!)%"!)%!J3#"!)#"!)%!J3#"!3#"!)%!J3#!!!!!3!-!J3%"!)%N!8#"!3 +%!J3#"!3%!J53"3)%"!3#"!)%"!3#"*!&!J3%"!)%!J3%"!)%N!8#"!3%!J3!!!! +"!!d#"!3%!J53$3)%"!3#"*!*!J3%"!)%N!d#"!3%!J53#3!!!!%!$J)%N"-#"*! +,!J53%`)%N!X!!!!"!!m#"*!M!J53'`!!!!%!"`8#N#-&!T!E!!!!!3!)"3+3%`8 +#N!X&!T!6"3+3#`!!!!%!#J8#!J)&!T!&"3)#!J8#"3)#!J8#N!8&!J)#"3)&!J) +#"3+3"38#!J)&!J8#!J)&!T!&"3)#!J8#!!!!!3!m!J8#"3)&!J8&!J8#"3)&!J) +&!J8#"3)&"3)&!J8#"3)#"3)&!J8#"38#"3)&!J8#!J8#"3)&!J8&!J8#"3)&!J! +!!!%!$!)&"38#"C!&!J8&"3)&!J8&"3)&N!8#"38&!J8#"38&!J@3"3)&"38#"3) +&"38#"C!&!J8&"3)&!!!!!3!0!J8&"3)&N!d#"38&!J@3#3)&"38#"C!0!J8&"3) +&N!N!!!!"!!i#"C!6!J@3#`)&N"-#"C!,!!!!!3!2!J@3)`)&N"X!!!!"!!F'!T! +M"J+3'`!!!!%!#!B#N"-'!T!,"J+3%`B#N!X!!!!"!!S'!J)#"J+3"3B#!J)'!JB +#!J)'!T!&"J)#!JB#"J)#!JB#N!8'!J)#"J)'!J)#"J+3"3B#!J)'!J!!!!%!2!) +'!JB#"J)'"J)'!JB#"J)#"J)'!JB#"JB#"J)'!JB#!JB#"J)'!JB'!JB#"J)'!J) +'!JB#"J)'"J)'!JB#"J)!!!!"!!`#"JB'!JD3"3)'"JB#"J)'"JB#"T!&!JB'"J) +'!JB'"J)'N!8#"JB'!JB#"JB'!JD3"3)'"JB#"J!!!!%!$3)'"JB#"T!0!JB'"J) +'N!N#"JB'!JD3$3)'aA3!!!%!!!!,d`!!#Y-!!!('!!!!!JadCA0dGf3e5@jNCAJ +#!J!#!%*AF(4#9fYc!3!6FfPYF'aP,QeNFM)b0MNh0$)h1!)!!!"%8PG(68436!! +!4&*A4de%8%`!N"M31PT&!!!3!!!!$CN!N!S1!*!%!JKdCA0dGfYc-J!#!!)!39G +A8&"656)"!!!!!3#3"L8!N!3$S`!!#!#3#meEl!V0@qc3!*!@!bB!!3#3'!i!N!4 +B4!d!#3!U!!-"f`*J!!!!!3!"!!%!!3!#!!)!!3!"!!%!"J!+!!-!$!#3"`)!N!B +#3!!!!['CQJ!!!,i!!!$a!*!+!['CQJ*!!*!&5!#35a,rN")!!!#3!!!"!!!!!3! +!)3#3$!J!!3!"!!!!!3!!)!!$!*!+#J!#!!"!!!!"!!!K!J%!N!S-!!-!!3!!!$) +!!#!!!`#3#J%!"!!#!!!!!3!!)3#3$"3!"3!"!!!!!3!!)3#3#`%X!!B!!!#3!!! +"!!!!!3!!)!#3$!J!!3!"!!!!!3!!)3!$!*!+#J!#!!"!!!!"!!!J!J%!N!S-!!- +!!3!!!$)!!#%!!`#3#J%!"!!#!!!!!3!!)!#3$"3!"3!"!!!!!3!!)!#3#`%X!!B +!!!#3!!!!!!9!)J#3"MqmFFFFFFFF!!JK!*!%!8!'V9UeDY@V2pD6k6k6k6m!#L! +$!!!!!6ri!*!'2q99N!B!$#%"!!!!!6rL*%L4)N5*2r`iiiiiiii!!5!$!!!!!8! +Fc*!&c6r"aaaaaaab!"3K!*!%!6r1Z&(VK4ki3"#UN!@V!5`K!*!%-!!"!!!#!!! +"!!)!!!)!!!)!"!!!!J!!!`!'!!!#!!!%!!J!!!)!!!8!#J!!!J!!"J!!!*`!#3! +!!!N!N"-"!"X!!!!*!*!6!J!5!!!!%J#3%`-!0J!!!")!N"-%!%J!!!!*!!!!#3! +!!!N!N!X&!%J!!!!*!!!!#3!!!!N!!!!*!!!!#3!!!!B!!!!m!!`!!!!%!!!!!3! +-!!!!!`!!!!)!"J!!!!B!!!!$!!`!!!!&!!!!"!!&!!!!"3!!!!8!!`!!!!-!!!! +'!!!!'J!!-!!#"!!E!!!!(J#3"-!!N!`)!!!!!3!!!!-!!!!1!!%!!!%!!!)!N!Q +5rj!)$deKD@iJ4'PMG'P[EQ&bH3#3-!p9Ff9b)%4TBh4TEfjKFRN!N$$m'I`C!!% +!N!F)!!!!!`#3"`F'4f9ZCACK!!!!e!#3"38!!!!'!!!!#J!!!!X!!!!-!!!!$3! +!!!i!!!!2!!!!%!!!!"%!!!!5!!!!%`!!!"3!!!!9!!!!&J!!!"F!!!!B!!!!'3! +!!"S!!!!E!!!!(!!!!"d!!!!H!!!!(`!!!#!!!!!K!!!!)J!!!#-!!!!N!!!!*3! +!!#B!!!!R!!!!+!!!!#N!!!!U!!!!+`!!!#`!!!!Y!!!!,J!!!#m!!!!`!!!!-3! +!!$)!!!!c!!!!0!!!!$8!!!!f!!!!0`!!!$J!!!!j!!!!1J!!!$X!N!3#a!!!!!& +i2"i2Km2Km!!!!!')4#)4L%3L%3!!!!'llYehZqlGG`!!!!(--fDCc$0QQ3!!!!3 +!N!X'rj!)!!!!!Arrrrrhrrrr!!!!!ArrprprrrIr!!!!!AIrhIphrphr!!!!"(I +GGpehhAIG!!!!!kT9UP@U9DT9!!!!!iJLL#+))SJL!!!!!iJ!)J#)!#)!N!3$J!! +)!)!!#!#3"!@!!!!!#!#3"J'!J%%q#!J8i`!!!!(rJ)#!r`J)#!!!!!'"3L3BJ8) +N'!!!!!'!3#!3#!3#!3!!!!(JF$JF$JH$`3!!!!&hZphZGl[GlJ!!!!')4#)4L%3 +L%3!!!!'Cc'BcQFaQ-`!!!!%J3)!!#!3#!*!%!Im!r`$r!2m!N!3"r`!!!2m!N!B +"c!!!!$-!N!B"m*!%$j!%!!!!!Iq)L)MrL)L)!!!!!DT%UK'U4+S4!!!!!3%#"!J +3)%#!!!!!!B-($K`iF1$"!!!!!HlGZhIZhEYh!!!!!4%L4)J4)N5)!!!!!60Qc*N +cCXbC!!!!!8#J!!!%#J#3"3'UN!J!!!!"L*!)!!!!!3%"%"!"!4!3!!!!!3!)&#T +9+K3)!!!!!Iq!N!F!!!!"JN3S%#K%JJ%!!!!"J!#3#J'!%!)J!3K!"!!!!!'U!+S +!UJ#U!*!%!9Ar9Ip9reAr!!!!!GhrGrrGrhIr!!!!!DS!J!#)!)!!N!3"#"`L`B! +"!J3!!!!"X6!$'pM!$)d!!!!"L"3L3BJ!UJ#3"!'#4$P%JJ%"!3!!!!%$K%J`$!) +"!3!!!!&9S%"!93S%"!!!!!%3)&5Ur`)%#!!!!!%J8)L3"!8#!!!!!Em![lq`N!3 +!!!!"q(3L4imA)R%!!!!"GiQ2MhHBq2J!!!#!!!!!!3!&rj!'!!!!(J!!!!%!"J# +3#5%!!!!"!!cGD`M#"U)!!!$0!!!!!3!+!!#!!"'`!!!"93!!!!%!#`#3"03!!!! +"Q3!!!!%!$r`!mhd&,`!!!%8!!!!"!!d#3DY8k[m!!!%4!!!!!3!1mYF)9S6X!!! +!L3#3"qB!"!#3!!$J!*!%rrr[R`C-BAP[GA339(9bEL""GA4[Ch*TC#"2EJ#3"!Y +6D'ph)&*eE'9bF`#3"!j6D'ph)%GbD@4XD@jPF`#3"!P6D'ph)&0THQ8!N!338fK +[Gb"3B@GP)%*bC@&VF`#3"!%Y!*!%"daKH@9bFmN!N!3(8R9XCA*cb3#3"!P3BA4 +dCA*ZFmN!N!3-8(*PCQ9bC@jMCA2*!*!%$84bBAGTEQFJ8fPkCFN!N!3",3#3"!e +'DA3J9'mJ9fPZC'ph!%d!!!P6CA3J9QPPGmN!N!L4!!F!9`#`!*!%rrrmr`4'Efj +d"d0SD@0KCfm!N!3(3fpeFQPPFJ#3"!C(C@jPGQ%!!")!#8KPE(CPG'PMB3#3"!C +0EfjKBfm!N!3)6Q9h)&P[FQX!N!3&9'PYCA-!N!3'9Q9ZD@0P!*!%!5d!N!3'4Qp +ZG(2*!*!%#90PG#"6G(PXC3#3#,%!#2q3"!#3"2rrhIm%8fPkC3Fj)&"[D@jd!!! +!#!)a-!!!!!J#-6)!!"))!M%d!!!!#!)a1!!!!!J#-M3!!!!)!M-f!!!!#!)d1!! +!!!J",3#3"!a6D@jRE'8J8h"KBf8!!")!$%4[G@*XC5"6F'&MC3#3"!Xb)("d,L" +6F'&MC3#3"!%Y!*!%#dC[ER3J8fPkCA2*!*!%$8aTEQ8J8h"KBfPZCmN!N!F"!!! +!#p-!!!V6!!!"aJ"I1G3Dd!!!!"`"aJ!64'PZCJ!!!+*%GRGc!!!!VN4cG'`!!!# +k8R0d-J!!!-C5Ff9d!!!!dN45G@`!!!$H8(0PG!!!!1T%Ff9d!!!!pN&cCA3!!!% +#8(*PCJ!!!3ji8(*Q!!!"'R"3FQB!!!%QFe"bCJ!!!6*'EA4i!!!"2NCZEA-!!!& ++F'&d8J!!!9CLBAG3!!!"BN0dBQ`!!!&ZBfpX8!!!!AT048j9!!)"KJ%!rrm!N!9 +I1Y`"!2rr!!!!A!"I1MJ"!2rr!!!!U!"I1J3"!2rr!!!![J#3"!%!rrm!!!&5!&m +k!!%!rrm!!!(Q!&mk4!%!rrm!!!*k!&mlP!%!rrm!!!+Z!&ml,!%!rrm!!!01!&m +m2!%!rrm!!!11!&ml%!%!rrm!!!1X!&mli!%!rrm!!!1i!&ml1!%!rrm!!!2+!&m +jR!%!rrm!!!4J!&mlY!%!rrm!!!4X!&mlL!%!rrm!!!4h!&mlN!!"!2rr!!!&6`" +I1j`"!2rr!!!)&`"I1jJ"!2rr!!!)Q`"I1qJ"!rrr!!!)R`"I1c`""[rr!!!*L3" +I2#3""rrr!!!+(J"I2!`!*3: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_Pro_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_Pro_1.0.hqx new file mode 100644 index 000000000..f89c71180 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacDraw_Pro_1.0.hqx @@ -0,0 +1,109 @@ +(This file must be converted with BinHex 4.0) +:#R4PFh404&!a,M!!C%4[Bf43FQm"!!!!%!!!!!cJjC0N4'pM4$,rr`!2!!!"D!& +S!*!%$VJ,32qerkB2,3ZDB`)&+!2m!3!!!!&S!@J!N!31Z!Y!!!%&!!"N!!%!!!! +"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3ZD!!J!N!iC!3!#!(J!5!!!!%J!N!J +"!3!#!*"Y!3!'!!B!!3!"!!B!"J!"!!%!!!!,!!!!!J#3#!%PT8X!MMaj!8ZP5`# +rQAN"*D9,!)imH3&,T8X![jPj!!!!#`#3"5'&#J!R,em"5k9,!F"I[`%PT8X!MMa +j!8ZP5`#rQAN!!!!,!*!&)B8+!#F[A`&,T8X"`&qr!5@P5`#12(N"5k9,!,qCH3! +!!*!!!!!!5!!!!+J!!!"8!!!!&J!!!1i!!!##!!!!#J!!!43!N!S$P!!!!B3!N!9 +4rkJ!!!!"!!!!!8!L!*!'2laaaaaaaa`!##%!N!3(3!DY@V9UeDXreT2T2T2T2`! ++)!-!!!!"2rJ!N!Brj9@3"J!-)3%!!!!"2q)N5*%L4)Nrr$MMMMMMMJ!")!-!!!! +"3"c-N!A02m(((((((()!&#%!N!3"2mki8HZ&(VK!%+U3"DX",#%!N!3(!!%!!!! +"!!%!!!!"!!)!!!!#!!)!!!!"!!3!!!!%!!3!!!!"!!B!!!!'!!B!!!!"!!J!!!! +)!!J!!!!"!!S!!!!+!!S!!!!"!!N!!!!*!*!9!3!E!!!!#3#3&3%!%J!!!")!N"8 +"!$B!!!!5!*!9!3")!!!!#3!!!!N!!!!*!*!0!3")!!!!#3!!!!N!!!!*!!!!#3! +!!!N!N!8"!!%!$!!!!!3!N!8%!!)!$!!!!!-!N!8"!!-!"J!!!!B!N!8"!!3!$!! +!!!8!N!8"!!8!"3!!!!8!N!8"!!B!!`!!!!-!!!!&!!d!!!!*!!!!&3!!!$!!!-! +'!!!!"3#3(2rr!*$4!3#3"`X!N!X,rj!%!*!-!5@P5`#12(N"5k9,!,qCH3!KK3S +!*bpI!8ZP5`(!Alm!N!`"*D9,!)imH3&,T8X![jPj!#'&#J!R,em"5k9,!F"I[`" +4rm3!!!&f!!!!#!!!#8CPG@PXE'8J-3!!!3J!!!!-!!!!"!#3r``!!!!"!!!!#!! +!!3J!!!!S!!!!"!!!!'!!!!#B!!!!p!!!!5`!!!')!!!"`!!!!K`!N1)#M!!!!!% +!!!"F!!!!#!!!!"`!!!!"!!!!!J!"!*!%J!#3"Khrr`!!!!%!$3!!!!N!N!HD#`# +3"!%!!!!F!!%!$3!!!!N!N!d1!*!&!3!!!$J!!J!"!!'K+`#3#@"J`J!&UeF!$NK +8!!KF-3!1%e8!"0GF!!hH9J!"8SF!!!!"!!!!A!!!!!`!!!!0!!!!!3!!!!)!!3# +3")!!N!B1rrm!!!!"!!d!!!!*!*!(5,L!!!!!!3!!!!d!!3!0!!!!#3#3$3i!N!8 +"!!!!1!!#!!%!!D%V!*!*B'$#!!@V9`!15&3!#&`a!!i693!%ee`!$Gj@!!&5K`! +!!!%!!!"F!!!!%!!!!"%!!!!"!!!!!J!"!*!%J!#3"K,rr`!!!!%!$3!!!!N!N!G +CBS!!!!!"!!!!%3!"!!d!!!!*!*!0$J#3"3%!!!!i!!)!!3!"S5X!N!PJB-)!"DY +A!!j)9!!)A$%!$K09!!6AA!!0hPB!!9+(!!!!!3!!!&`!!!!8!!!!#!!!!!%!!!! +#!!%!N!5!!*!'#Irr!!!!!3!0!!!!#3#3"bB#J!!!!!%!!!!)!!%!$3!!!!N!N!d +1!*!&!3!!!(!!!!!B!!!!"J!!!!%!!!!#!!%!N"L!!*!'"rrr!!!!!3!0!!!!#3# +3"b&G!*!%!3!!!!B!!3!0!!!!#3#3$3i!N!3"#!!!!"`!!!!%!!!!+!!!!%!!!!" +F!!!!E!#3lh`!!!!"!!!!*%%JFfeKE'`J6@&M4(*KGb"3FQmJCQPXC5!a,M!!!!! +"!!!!''%JBQaeC5"cFA9KFQ8!!#J!!!!"!!!!('%JCh*PC@iJFQ9MG#"[GQ&X!!! +N!!!!!3!!!""K)'0TFQ0XC3!!!!%!!!!3B5"ZEh4P!$!!)B8+!(3iF3![K3S"$N0 +a3!%!N!X)!!"!!!"AAlm!*bpI!+6SdJ#6jXi!!`!"!J$!"X!'!*!'J!!!9)S8!,I +!J3#@[(N"2IVf!!3!!3)!`!E!"J!"aBX!!)!"!&GI[`&U9DX!LfA-!F"I[`!&!!% +#!-!'`!B!N!D!!J#TP#J!A3X@!3VdkJ"QCdG!)J!"!J$!"J#3"3`!N!3"%REZ!$A +EY`%JGZi!IT3h3!%!N!X3!!"!!!#ECp!!pKdk!2c)NJ$rH@Y!)J!"!J$!"J#3"43 +!N!AqRci!e*Nb!3bI2J%Yql*!!3#3#aJ!!%!!!*,QcJ'5"3N!p%H3!!'EB6T!)J! +"!J$!"J#3"4`!N!Af(M`"H3)%!33H2!'I")4!!3#3#b!!!%!!!5@P5`#12(N"5k9 +,!,qCH8!+!*!,*!!!3!$rrc-c!!!!,!#3"30e9Irr-c-!!!!Y!*!&!i!!rrmc-`! +!!#i!N!8$K9Arrc-c!!!!,`#3"31+U[rr-c-!!!!`!*!&!irrrrmc-`!!!$%!N!8 +$P96rrc-c!!!!-J#3"31GU2rr-c-!!!!c!*!&!kUTrrmc-`!!!$3!N!8$[rrrrc- +c!!!!03#3"32992rr-c-!!!!f!*!&!q10rrmc-`!!!$F!N!8$lMMrrc-c!!!!1!# +3"3-!!2rp6-d!!!!j!*!&!`UVrre-c3!!!$S!N!8$&9Arr8c0!!!!1`#3"3-J!2r +p6-d!!!!m!*!&!b99rre-c3!!!$d!N!8$+UVrr8c0!!!!2J#3"30!!2rp6-d!!!! +r!*!&!e99rre-c3!!!%!!N!8$DUVrr8c0!!!!33#3"30e9Irp6-d!!!"#!*!&!i! +!rre-c3!!!%-!N!8$K9Arr8c0!!!!4!#3"31+U[rp6-d!!!"&!*!&!j!!!2rp6-d +!!!"'!*!&!j99rre-c3!!!%F!N!8$RDMrr8c0!!!!5!#3"31UU[rp6-d!!!"*!*! +&!lrqrre-c3!!!%S!N!8$e9Arr8c0!!!!5`#3"32MMIrp6-d!!!"-!*!&!qiirre +-c3!!!%d!N!8$!!$rrQCQ!!!!6J#3"3-+UrrqCQB!!!"2!*!&!a99rrjQCJ!!!&! +!N!8$)!$rrQCQ!!!!83#3"3-P9IrqCQB!!!"5!*!&!bUUrrjQCJ!!!&-!N!8$3!$ +rrQCQ!!!!9!#3"30992rqCQB!!!"9!*!&!fUUrrjQCJ!!!&B!N!8$G9ArrQCQ!!! +!9`#3"31!!2rqCQB!!!"B!*!&!i99rrjQCJ!!!&N!N!8$LUVrrQCQ!!!!@J#3"31 +3!!$rrQCQ!!!!@`#3"3199IrqCQB!!!"F!*!&!jfSrrjQCJ!!!&d!N!8$UUVrrQC +Q!!!e@3!!!3!!!!S+!!!*#J!!!YB!!!!#$R4PFh4(FQ&`D#jhF(-cG`)!!J""9eG +3690A5`TdCA0d6843-5i`!!)!!!"N4'pMC&"bE`#3#Q4%Ef0N8(*[!*!Bd(I'3!! +!%!!!!!cJ!*!-%3#3"!),G'9cG%GbBA"S3eF#!!)!3eGA8%*23Nm"!!'!!8!!N!3 +#[3#3"!r&!!!3!*!&!FJ!!!J!cQa0IFjXlYi!N"B%'J!#!*!)""`!!3#3$A*N(3% +*!#N!!`(G!M-!!!!#!!)!!!!"!!%!!J!#!!%!!3!"`!E!"J!"!!"!!!!"!3%!&3! +`!*!%rrm!N"B#3!!!!['CQJ!!!6UP5`#@2(N!N!J#mCQD!N!!N!8'!!-!N!F5!!% +23fpeE'9eFR-J3faKFQPc!!!!,J!"!+J!8Ip3!!J!&3!!!'3!N!9N!!!!8Im-!&( +r@!"4re`!N!dm!!!!!3#3"31GU2rqCQB!!!"F!!!!!3#3"30992rqCQB!!!"8!!! +!!3#3"3-!!2rqJ!#3"')!!!"3!*!13fp&6!!3!*!08Ip`!*!-4&"$E`!8!!-!N!4 +$EdjK!!X!$J"4rhJ!N!X3!!%06@pdD@Cc)%0XBA*TF`!!!#i!!3"!!&(r,!!)!!J +!!!"N!*!&C!#3"e(r0!"4rcJ!N!d+!*!08!!"!*!,!9"K48`!$J#3"`%!!!!"!&( +r9!#3$%438'%!%J#3"3&3B8jK!!i!)!"4rd`!N!X5!!%24)jRFQ&NMR-J3faKFQP +c!!!!,J!"!"!!8Im)!!)!#!!!!'3!N!9N!*!(8Im3!&(r&!#3$3S!N!e3!!)!N!X +#8Q&&6!!d!*!(!J!!!!)!8ImS!*!-4&"5B3!i!*!&!P*K6Q%!$J!J!&(r-!#3#bi +!!3!I!&(rG!!"!"m!!!"N!*!&#`#3"e(rI!"4ri!!N!d+!*!08!!$!*!,!dCK48` +!@J#3"`-!!!!$!&(rN!!!N!a%8%CK!$B!N!8$4Q&1B3!3!#!!8IqN!*!,E!#3Ea, +rN")!!!#3!!!"!!!!!3!!)3#3$!J!!3!"!!!!!3!!)!!$!*!+#J!#!!"!!!!"!!! +K!J%!N!S-!!-!!3!!!$)!!#!!!`#3#J%!"!!#!!!!!3!!)3#3$"3!"3!"!!!!!3! +!)3#3#`%X!!B!!!!`!!%!!!)!!!%!!J!!!J!!!J!%!!!#!!!$!!B!!!)!!!3!#!! +!!J!!"3!+!!!#!!!'!!!!R)!*!!!!#3#3%`'!'`!!!!N!N"-#J")!!!!5!*!6!i! +f!!!!%J#3%`5!5!!!!!N!!!!*!!!!#3#3#`@!5!!!!!N!!!!*!!!!#3!!!!N!!!! +*!!!!"J!!!$`!$!!!!!3!!!!"!!`!!!!$!!!!!J!'!!!!"J!!!!-!$!!!!!8!!!! +%!!8!!!!&!!!!"3!$!!!!!`!!!!B!!!!D!!8!!!`!!"aBX3!H!*!%`!#3$#i!!3# +3"@3!-J$A!4J!-J!b!0J!b3"N!A3!UJ),!)`!P3#J!6)!N!F#!!!!"J%!!3!!!3! +!!!)"!3!!!!3!!!!"!!!!"J#3"!%!N!55rj!)&N4TBh4TEfjZB@PbC5"`FQPZBfP +`B@`!N#NB4'PMG'P[EQjKDA*P)(9dD@aTFf&dCA9b!*!Rr"Rm'3!"!*!(+!!"!!! +!!3!!!!%!!!!"!!!!!3!!!!%!!!!"!!!!!3!!!!%!!!!"!*!&&!!!!!%!N"-)!!! +!&3#3"`S*5'9XGQ9dD@0K!!!!#!(j!#S!6N3B!!!"q4K"FQPKE#"09#"$EfjNC@j +cC@3J6'PRD(3,3ACKER3J4f&bC'883QpNEfjT)%e8)&9XG(*K)%*[E'3(3Qp[Dfe +KEJG$D'PMB@G["d0[GA*TCA))4'9XF'KTB@i*4A0`H5"6B@jc$N9cF(NJ8f&ZFb" +#EfaN$'9AEh*XC#"8D@GSG!p(BA*KE@pZC#"1BA*bEhF'4f9ZCACK'%GTE'`J8f& +ZFb"$EfjNC@jcC@3J3QpXC!P)C@afCA4TBf%25'9XGQ9dD@0K)%*XB@0V&%KPE(C +PG'PMB5"$Efe`FQ9cFf9N#%YXB@jR)%e8$8aeBQ&XD@iJ4h*KF'J06(9MD@4K)%* +bD@GSG!G0B@0SD@jP"Ne[EQ&ME`K09#"&H(4bB4*1)%KPE(CPG'PMB5"1BA*bEhF +)6Q&ND@&ZEQ826Q9h)%*PFQpXD@jK)%e8%NjPGb"$C@jdGA*j)&0MD'aLD`K1CAF +J@@pbDa"2E'3J4@jRE'PcD#"8CAKd%dpXC#"&EQGXDA0S)&4PH(3J693%6fjjH!C +2H'C[FQ3)8'&XBA4TEQm18f0bDA"d)%e8)%*[E'3&8hGTEQF'8hPYBQpX#&4PE'9 +dCAKd"94TE@9c"e48@8C[ER30@Q&`CL"$D'&ZBf9bH3eDBA"Q)%4TEQGLBA4c"&T +PB@`&9P3a-$!!!!!)!"X!#!"14"!!!!!E"6NJF(4c!M%`!M%b!M%d!M%i!M)d!M- +f!M3i!!!"!!!!#JS!!!N+!!!#eJ"*k-`BqJ!!!"`#eJ!G4'PZCJ!!!2*69&P*!!! +!rP088L-!!J%+99"%6!!$!5j%8%0[!!!"AP"K4%)!!`&U4&"3B3!!!CT%8&*K!!! +"TN434Q%!!!'b4(ChF`!!!Ej%Fh4X!!!"bP*cCA3!!!(@8(0PG!!!!H*%Ff9d!!! +"lN&cCA3!!!(k8(*PCJ!!!JC3FQBa!!!#%P"bCM)!!!)H8(*Q-`!!!LT3FQBd!!! +#0P"bCM8!!!*#8(*Q0J!!!Nj3FQBi!!!#@P"bCMN!!!*Q4QedH!!!!R*'EQec!!! +#IQCZG%`!!!++CQjd4!!!!TCcDAT-!!!#SR0THN3!!!+Z!3$rr`#3"8j%E!!!rrm +!!!"f!%j%D!!!rrm!!!#!!*!&!Irr!!!"A!#3"3,rr`!!!J3!N!Err`!!!*B!N!8 +"rrm!!!&`!*!&![rr!!!#'J#3"32rr`!!!Ui!N!Err`!!!-J!N!Err`!!!3J!N!8 +"rrm!!!'`!*!&![rr!!!#@J#3"32rr`!!!Zi!N!8"rrm!!!'L!*!&![rr!!!#6!# +3"32rr`!!!Z!!N!3"!2rr!!!$3J"14&J"!2rr!!!$XJ"14&3"!2rr!!!$b!"14&! +"!2rr!!!%A!"14%`"!2rr!!!%N!!!6N4)!3$rr`!!"6!!6N4%!3$rr`!!"A!!6N4 +!!3$rr`!!"Bi!6N3m!3$rr`!!"F!!6N3i!3$rr`!!"FS!6N3d!3$rr`!!"G!!6N3 +`!3$rr`!!"GJ!6N3X!3$rr`!!"H)!6N3S!3$rr`!!"RJ!6N3N!3$rr`!!"U3!6N3 +J!3$rr`!!"V`!8Ir!!3$rr`!!"XJ!8Iqm!J$rr`!!"YB!6N3F!J$rr`!!"Z)!6N3 +B!J$rr`!!#0m!6N38!J$rr`!!#1X!6N33imS!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_1.0.hqx new file mode 100644 index 000000000..a8d23fe54 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_1.0.hqx @@ -0,0 +1,72 @@ +(This file must be converted with BinHex 4.0) +:#R"KD@jd-5jYBh!!8%j84de36P3"!!!!$J#3"3+G!!!!![q3#0hrGrrGrhIrhAI +GGpehhAHU9DT9UP@U99Ar9Ip9reArUT!)lYflGqlGZhH)N!La-!-Ef-!-MB!3!L! +"#%!%riL)L2q)L)MrJ)#!r`J)#)!!N!H!3#!!!J3)!)*%185#!3%"q(3L4imA)R& +9S%"!93S%"#"3L*!%"3+r!,qrX*!%!*!)J!!)!)!!#!#)!#)!L!!L!)JLL#+))SJ +LUJ#U!+S!UJ$r!2m!r`$r!"%L4)J4)N5)r`!!!2m!!!!"!J3)%#"!J+S!J!#)!)! +!ri#3"`JF)X'!!3)%L"3L3BJ!UJ"!S!!!"!S!!!1%5$!-!J%"J)""2JJ)&1-3)&5 +Ur`)%#(H*MiphQ2Mi!!J8+P8U&!J!N-bj!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!1X!#XB##!!(`!3!3!a'fJ$V!!T#!aJ!"#!!!%!3!YS!m!!3"`$Lc$K#!UMKa#1 +-@1!i`KcE!2!!%!L"%c*%3J**%L3N4'4!%%)Lf`$`!"!(J3)L2%)##2)(`m4%3"" +#)YX!m!!3#)$L)N4#!JN5"!4%4%!33MlE!2!!%!L!%L*%3J)*%J3%4%4!%%)Jf`$ +`!"!)J4)L4%)##4)N"%4%3""#)YX!m!!3"i$L)Ma#!JMaa!2%4$!33KcE!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!mJ$fr`$Je!$b!2EG!1$8!2)!!2IhG`"Je!$ +b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2I +hG`"Je!$b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$ +8!2)!!2IhG`"Jr!!!"rEr!2cQ!2)!pYd!i2`!!"hfh3$IjJ$b!!$hphF!B2`!!$I +eG`#!j`$b!2EG!1$m!!"GpGd!`1F!mJ!!prGh!'$m!!$hpAF!B1F!mJ$fh3$Jr!$ +dh3$Jj`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$ +p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd +!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ! +!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2IhG`"Jr3!!!I4h!($ +R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d +!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2IhG`"Jr3! +!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$ +p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2I +hG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$ +b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$ +R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!( +dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3! +!!I6G!0$R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF +!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$ +fh3$Jr3!!!I6G!0$R!2)!p[m!i2d!!!(dG`"`j`$L!!!"p0d!d1F!iJ!!!I4h!($ +R!1)!!!(dh3$3j`$L!!!"p(F!F1F!iJ!!!I6G!0$R!1)!!!(dG`"`j`$L!!!"p0d +!d1F!iJ!!!I4h!($R!1)!!!(dh3$3j`$L!!!"p(F!F1F!iJ!!!I6G!0$R!1)!!!( +dG`"`j`$L!!!"p0d!d1F!iJ!!!I4h!($R!1)!!!(dh3$3j`$L!!!"p(F!F1F!iJ! +!!I6G!0$R!1)!!!(dG`"`j`$L!!!"p0d!d1F!i3!!pr9h!'$R!1%!p0d!i1F!i3$ +dG`"!j`$K!!!ppGd!J1F!i3!!(r9hjJ$K!!!(p[m!r1B!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3$V!!V'!JJ!"m!%!%!-4YS!k`!+3J-B!!3J!!"!%!, +D!2!!%!F!iX`i3J+SiF3MM&MJ1-)Ff`$`!"!)J4-b4%)#54)N*%4N3""#)YX!m!! +3"i%#)Ma#!JMb"m2%4%!33L,E!2!!%!L!iL*%3J)*%J3%4%4!%%)qf`$`!"!)J") +L4%)##4)%"%4%3""#)0X!m!!3#)%5)N4#!JN5*!4%4%!33L,E!2!!%!H!iL)m3J) +)mF3$a%3`%%)Ff`#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3"m83!!: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_2.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_2.0.hqx new file mode 100644 index 000000000..57aa231da --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MacPaint_2.0.hqx @@ -0,0 +1,116 @@ +(This file must be converted with BinHex 4.0) +:#R"KD@jd-LjYBh!!8%j84de36P3"!!!!&"N!!!(ejl0`#l"Yrj!)hIphrphrGrr +GGpehhAIGGkT9UP@U9DT99Ip9reAr9IqUN!MZhEYhlYflGiL3#,%`!a[B`!b0J"! +#)!%)3!6rL)L)riL)L2q!J)$r#!J)J!#3"i"!)!!#"!J!JN3j4))"!3(iG#*(MaF +LF9@J3%"9#J3%)&#)N!3&!Vm![lq`N!3!N!L!!!J!J!!)!)J!)J#)!#)!L#+))SJ +LL#+U!+S!UJ#U!2m!r`$r!2m!%5*%L"%L4)Mr!!!!r`!!!!%#"!J3)%#!UJ#!!)J +!J!$rJ*!(#"`L`B!"!J5)&#*"L!#U!%#J!!!%#J!!!i4)-!`#!3'!J%%q#!J8ia! +J9+Vr!J3)GiQ2MhHBq2J!#"3U95S8#%KZr+4)E[bS2c`!5+M23HlmV#!Zr+L3!)J +Y32kX3QF`,HBk8d""lHBm`I`#AN(S!L3r-!!!5'lqV%KZr+a1V3,51erriL!ZrUc +4V[4q5QhriQF33QFr,IrL,`j1Z[A529rrrP5Zr+48V[bS8QldS!aZ!Y$dS'q#-#h +Q1P0!3HhQ2-(m!Pj"k!)F-M!!!,*ZrlT@`$)YjMT638(YjMc$r!*H3HJ#(M3`%!# +dE[qm9X'!!5m!3QFb,HBk8d&"lHBm`r`#AN(S!Ga)F"!!5'fj!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!1X!#XB##!!(`!3!3!a'fJ$V!!T#!aJ!"#!!!%!3!YS!m!! +3"`$Lc$K#!UMKa#1-@1!i`KcE!2!!%!L"%c*%3J**%L3N4'4!%%)Lf`$`!"!(J3) +L2%)##2)(`m4%3""#)YX!m!!3#)$L)N4#!JN5"!4%4%!33MlE!2!!%!L!%L*%3J) +*%J3%4%4!%%)Jf`$`!"!)J4)L4%)##4)N"%4%3""#)YX!m!!3"i$L)Ma#!JMaa!2 +%4$!33KcE!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!mJ$fr`$Je!$b!2EG!1$ +8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2IhG`"Je!$ +b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2IhG`"Je!$b!2EG!1$8!2)!!2I +hG`"Je!$b!2EG!1$8!2)!!2IhG`"Jr!!!"rEr!2cQ!2)!pYd!i2`!!"hfh3$IjJ$ +b!!$hphF!B2`!!$IeG`#!j`$b!2EG!1$m!!"GpGd!`1F!mJ!!prGh!'$m!!$hpAF +!B1F!mJ$fh3$Jr!$dh3$Jj`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d +!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2IhG`"Jr3! +!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$ +p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2I +hG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$ +b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$ +R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF!B2d!!!( +dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$fh3$Jr3! +!!I6G!0$R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$b!!$hphF +!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F!F1F!mJ$ +fh3$Jr3!!!I6G!0$R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!(dh3$3j`$ +b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$p!!!"p(F +!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!!2IhG`"Jr3!!!I4h!($R!2)!pYd!i2d!!!( +dh3$3j`$b!!$hphF!B2d!!!(dG`"`j`$b!2EG!1$p!!!"p0d!d1F!mJ!!prGh!'$ +p!!!"p(F!F1F!mJ$fh3$Jr3!!!I6G!0$R!2)!p[m!i2d!!!(dG`"`j`$L!!!"p0d +!d1F!iJ!!!I4h!($R!1)!!!(dh3$3j`$L!!!"p(F!F1F!iJ!!!I6G!0$R!1)!!!( +dG`"`j`$L!!!"p0d!d1F!iJ!!!I4h!($R!1)!!!(dh3$3j`$L!!!"p(F!F1F!iJ! +!!I6G!0$R!1)!!!(dG`"`j`$L!!!"p0d!d1F!iJ!!!I4h!($R!1)!!!(dh3$3j`$ +L!!!"p(F!F1F!iJ!!!I6G!0$R!1)!!!(dG`"`j`$L!!!"p0d!d1F!i3!!pr9h!'$ +R!1%!p0d!i1F!i3$dG`"!j`$K!!!ppGd!J1F!i3!!(r9hjJ$K!!!(p[m!r1B!Z3# +j!,N!Z3#j!,N!Z3#j!,N!Z3#j!1i!!"hph3$FdJ$[!!(`IrcrdJ$`!!%"FIYhl3! +!F1F!m!!!!r[r!2lY!!$qj`$`!!)"hGrpr`$`r!!"!F$e!!)"hG$S!2!!!J2r`2k +!qJ!"!q$e!!)$rrMS!2!!!30hrB$k!!%$F28!!J0(GqJ!m!!%!I`!J)$j!!%$r28 +!!`I$rm$T!1m!!"cf!!%"h28!!`f!(G$T!1m!!(cf!!)$ri$f!!-2!!rmk3$[!!" +`pJ!#!dG!pJ!$"`!"GqN!l`!!H2B!!J2(m2B!"!m!!(q!kJ$[!!"BpJ!#!F(Br!! +!%2`!"%d!!"h!kJ$[!!"ipJ!#!m$qr!!!H2`!"2m!!!IJkJ$[!!"`pJ!#!d"hr!! +!F2`!"(F!!!&`kJ$[!!"ipJ!$!m!I`2d!!(Mm!!$rrJ!!r1S!l`!!@2B!!`(!$F$ +p!!"Br!!!hIi!!&cU!1m!!2Mf!!-$`!2`r3!!H2`!!2rq!!!rkJ$[!!"`pJ!$!d! +"G2d!!($m!!"frJ!!"qS!l`!!m2B!!`2!!(lp!!"ir!!!m2i!!3q!k`$[!!$3pJ! +%!F!!(B$q!!"Br!!!d2i!!3@!k`$[!!$`pJ!%!m!!(m$q!!"ir!!!m2i!!3H!k`$ +[!!"`pJ!%!d!!"f$q!!"`r!!!F2i!!3G!k`$[!!$`pJ!%!m!!!rMq!!"ir!!!m2i +!!32!k`$`!!%"d2B!"!(!!!$FrJ!!@2`!!0$q!!%"`1X!m!!"!H$f!!3$`!!!Iri +!!(Mm!!$`rJ!"!H$V!2!!!3&JpJ!%!d!!!$Iq!!"`r!!!F2i!!3&`k`$`!!%"i2B +!#!2!!!!2`!!!H2`!!2$p!!$`k`$`!!%"`2B!#!(!!!!&d!!!@2`!!0$p!!$Bk`$ +`!!%$i2B!#!2!!!!"q!!!H2`!!2$p!!"ik`$`!!%$32B!!30!rJ!$G!!!F2`!!($ +p!!"dk`$`!!%$`2B!!32!rJ!$I`!!q2`!!2$p!!!mk`$`!!%"`2B!!3(!rJ!$(B! +!d2`!!0$p!!!Gk`$`!!%$`2B!!32!rJ!$$m!!m2`!!2$p!!%IJ1`!m!!"!d$f!!% +$32i!!`G`!($m!!"`r3!""d$X!2!!!32!pJ!"!m$q!!-"q!$`r!!!m2d!!3IJl!$ +`!!%"`2B!!3(!r3!#h!$3r!!!d2d!!3(Bl!$`!!-(rrrJq!!"!m$p!!*r!2$m!!$ +`r!!!r1`!m!!!"rjh!($j!!%$32d!!KF!F2`!!($m!!"hl!$`!!!(r2m!r[X!!32 +!r3!#$m$`r!!!m2`!!6r!l3$`!!%&RIcGq`!"!F$p!!)&d0$m!!$3r!!"$G$Y!2! +!!`H!!$rqrrX!!32!r3!#!IM`r!!!m2`!!3Iml3$`!!!(rJ!#"hGfq`!"!d$m!!& +eF2`!!($m!!%"GZd!m!!""i$f!!%$`2`!!ArJr!!!m2X!!(rY!2!!!3@!pJ!"!F$ +m!!%G`2`!!0$l!!!Gl3$`!!%(J2B!!32!r!!"$q$m!!$`q`!!$qd!m!!!"r8!!30 +!r!!""f$m!!"`q`!!&qd!m!!!$r8!!32!r!!"!r$m!!$`q`!!(Zd!m!!!$I8!!3( +!r!!"!GMm!!$3q`!!(1d!m!!!$r8!!32!r!!"!Icm!!$`q`!!21d!m!!!"r8!!30 +!r!!"!AEm!!"`q`!!G1d!m!!!$r8!!32!r!!"!Irm!!$`q`!!H1d!m!!!(I8!!3( +!r!!"!Fhm!!$3q`!!@1d!m!!!([8!!32!r!!"!qrm!!$`q`!!q1d!m!!!&[8!!30 +!r!!"!dEm!!"`q`!!F1d!m!!!([8!!32!r!!"!m$m!!$`r!!"!I$Y!2!!!"ce!!% +"`2`!!3(!r!!!d2`!!3(!l3$`!!!Hp3!"!m$m!!%$`2`!!2$m!!%$i1d!m!!!0[8 +!!30!r!!"!d$m!!"`r!!"!d$Y!2!!!$ce!!%$`2`!!32!r!!!m2`!!3I!l3$`!!! +Fp3!"!F$m!!%"`2`!!0$m!!%&J1d!m!!!228!!32!r!!"!m$m!!$`r!!"$i$Y!2! +!!$6e!!%$32`!!30!r!!!F2`!!!IX!2!!!$ce!!%$`2`!!32!r!!!m2`!!!rX!2! +!!"ce!!%"`2`!!3(!r!!!d2`!!"hX!2!!!$ce!!%$`2`!!3I!r!!!m2`!!"lX!2! +!!$6e!!%$32`!!!Il!!"`r!!!&Z`!m!!!2r8!!32!r!!""i$m!!$`r!!!2Z`!m!! +"(B$f!!%"`2`!!3@!r!!!d2`!!"cX!2!!!3r!pJ!"!m$m!!%(J2`!!2$m!!!ml!$ +`!!%(32B!!30!r!!!"rX!!($m!!"dl!$`!!%$`2B!!32!r!!""i$m!!$`r!!!H1` +!m!!"!F$q!!-&hGh!r3!"!F$m!!%&J2`!!0$m!!$Bl!$`!!3$`!!!(rlr!1$p!!% +$`2`!!3H!r!!!m2`!!2$X!2!!!!2kG`"Jr3!"!d$m!!!(q`!!F2d!!3&`l!$`!!! +$q[m!`2d!!32!r!!""i$m!!$`r3!"!H$X!2!!!!(ph3$FqJ!"!F$m!!%&J2`!!0$ +p!!%"`1`!l`$qr`$`q3!"!m$m!!%(J2`!!2$p!!%$i1`!l`!!B2B!!30!r!!!"rX +!!($p!!%$31`!i`!"!m$m!!%(J2`!!2$p!!%$`1`!i`!"!F$m!!%&J2`!!0$p!!% +"`1`!i`!""m$m!!%(J2`!!2$p!!%(`1`!i`!!"rX!!!Il!!"`r3!!"qX!i`!"$i$ +m!!%(J2`!!2$p!!%(J1`!i`!"$B$m!!%&J2`!!0$p!!%&J1`!i`!"$i$m!!%(J2` +!!2$p!!%2J1`!i`!!"rX!!!Il!!"`r3!!"qX!i`!!"[X!!3H!r!$lrqX!h!!""B$ +m!2[Gk`$F!!%(J2`!qrrV!0`!!!Il!2ah!(EV!0`!!3H!r!!!m1B!h!!""B$m!!" +!jJ$F!!%(J1!!h!!!"pm!h!!""i$J!0`!!3@!i!$F!!%(J1!!h!!!!pm!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N!Z3#j!,N +!Z3#j!,N!Z3#j!,N!(iJ!!!%!!!!"RJ!!!*i!!!"A)%G%)%&38%`"!*!A#R"KD@j +d-LjYBh!!!J!!!&"19%G08%j8!*!+8%j84de36P3!N"M2Y*d&!*!'!I8!N!`#RL8 +"6Np"68&38%`"!*!G!8iP!90*9'96594-"3#3(3(6*3&KG'0[4hTTF2m!N"JH!#J +!"!(8!Fm!#!&l!!N!d3$J!KF!+!"l!*!%!H%!!!"ijDSr2!!#,a5T4d*R6Ud!`K! +IC`!!e(i"B"``"e0!3HhQ2-(m!Pj"k!*1%M!!!'F%1dINL&*(F!Q`4fcH2@hNL2f +iIJ&J!!#B-!G63%(YjMc"r!*H3HJ#6K)`!!"R)M!(8d""lHBm`I`#AN2Zrlj&k!( +F3I)!!(!2!!!"!!!!!Ci!!!#H!!!!9`"K+-`BqJ!!!"`!4J!"8&*&4J!!!"*38N9 +$!!!!(J#!!*!(BD!B!)%!#3!!!#)!BD!F#%4[Be"bC@Cc"d4[Be"bC@-5E3: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_3.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_3.0.hqx new file mode 100644 index 000000000..ab761cd8d --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_3.0.hqx @@ -0,0 +1,27 @@ +(This file must be converted with BinHex 4.0) +:#@4bBAFc,QecG`""9d45690A5`%!!!!%`!!!!8C')3!!!!N!+`!%!Gi#2J#3"3` +!N!B)!*!)$`!!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V! +,3!!"!3!!C!!"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N +"!(J!H!"i!(J!N!F"!!%!N"%"!!%!!!!"!!!$qJ!!!!8!N"%-!!%!@`!1$k-!&3q +K'eJ!![rr!!%!"J!)rrrrh[rrrr!!N"3%HJ#3"43!!!!$!!`!!`#3"3%!!3#3"3% +!!3##!"0T+!!!q9)!Gj1)!!!C@!"hN3!!GiC`!!$el!#3"KRr!(DF!!!!m3B!Gj@ +)!!!C@!#3"2q3"!!!"YX!!2rr!"0T+!!!'Im!GT`!N!J&!JK!J+Nb!*!(D+Kk!!! +BqN#!lU`!!)4D!&FLQ!!ibp3!N!PSkjiJ!!"Q!'B!8mr-!'LTcN#!lU`!!)4D!'M +[2!!ic(B!N!PSkjiJ!!"Q!'EK$!!!"-!!!!Drrrrrq`#3"@MVRJ"6cm`!D1ZH!'P +9'J"SUKB!9Z4Srrrrq`!!!!)!8m()!'LU(J"@j+`!#!!#!!%!@!"B$k-!&3"N$k- +!N!8"!!%!#2rrrpMrrrr`!&m!!!"-!!!"6J!!!)d!!!!8!!!%!`!!#3!"!-!!AJq +M!!X!C!#3"@3!!3!"!!Mrrrr3rrrri!#"!!!!D!!!!8(ra3"i!*!'"!F!N"SF!!% +!!3"6[#J!8leNq*!%!&1lk!#3"4hrr`!!!")!!3!3!!`!!`!!!!`4N!B!!!!)!"! +!$!!3!!`!!!!)pj!%!&1lr!!!!"B!N!F3!!`!!`!!!!crrjQC-c-!!!!F35"cD@e +`E'8J6@PMFQpcEfCd9fpbDh-JC(*KG`!#!!%!@`!1!*!%rrmE@!!#rrm!!3!'!!M +rrrrBrrrrm!"0!!!!X!!!!1X!!!%J!!!!&!!!"'!!!!)!!3"E!!i2S`!9$k%E@!! +#rrm!!3!'!!MrrrrBrrrrm!%E!!!!XJ!!!E!!!!%C!!!!&!!!"'8!N!3"!&X!$Jq +M!"82S4YB!!,rr`!"!!B!#2rrrpMrrrr`!*3!!!#[!!!!d!!!!)i!!!!"!!!%D3# +3"!%!@`!1$k-!&3qK'eJ!![rr!!%!"J!)rrrrf2rrrr!"B!!!!+i!!!%K!!!!MJ! +!!!%!!!4X!!!&!!%!@`!1$k-!&3qK'eJ!![rr!!%!"J!)rrrrf2rrrr!!S`!!!5X +!!!%e!!!"IJ#3"J4d!*!%"3"6[-!!h!!!!@d!!!%#!!!"IJ!!!68!!!&9!!!!jJ! +!!5X!!!#M!!!"E!#3"3%!@`!1$k-!&3qK'eJ!![rr!!%!"J!)rrrrf2rrrm!"-3! +!!6N!!!%N!!!!N!!!!!!"!!!%GJ#693!!!3!!!!%8!!!!&!!!!$*59%G%8P434JB +!N"F*C(*KGc-ZEA0h!J#30mqdj*i!N!B"4J#3$!)e*3&59lNh4&"54J)!N"lG*3& +5C@GT39"36!)!N"d"L58"8Q9i,N&38%`"!*!B%!p0D@0bEh0[CR3J9fpbDh-!!!% +!!!!"&!!!!"3!!!!b!&2(8"PB!!!!(!!b!!"69&)J!!!!#Vrdrrm!N!96Zq$0QJ: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_4.0.msw b/writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_4.0.msw new file mode 100644 index 000000000..d2ab02e32 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/MicrosoftWorks_4.0.msw differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/ReadySetGo_1 b/writerperfect/qa/unit/data/draw/libmwaw/pass/ReadySetGo_1 new file mode 100644 index 000000000..71a2e7a91 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/ReadySetGo_1 differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/Scoop_1 b/writerperfect/qa/unit/data/draw/libmwaw/pass/Scoop_1 new file mode 100644 index 000000000..78af036c6 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libmwaw/pass/Scoop_1 differ diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_1.0.hqx new file mode 100644 index 000000000..a7d04718a --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_1.0.hqx @@ -0,0 +1,27 @@ +(This file must be converted with BinHex 4.0) +:#'4bBAFa,R0`!&039%G68%j8!*!%!fJ!!!9ZASN3!*!+!J#3HL3"!!%!(&La!*$ +r!*"d-J"9!AB!f`)N!*!*(!%"!3!!,!!"!!(rN!M`N!32N!3%!3%1!&S!-J"E!+8 +!QJ%i!*!*(3%"!!!!@`!"!!(rN!M`N!32N!3%!3"5$c3!!!!Q!#B!@`#P!*N"0`" +H!-)!GJ#P!*N!h`"e!6F!@`%$!'`!hJ"H!-)!-J"B!$X!N!!!H`#3#4S"!3!!!,3 +!!3!"rj!)m*!%$j!%"!%!N!8b!$m!8`!r!6B!N!NB!*!&"`!$!!2rN"!%!3#3"8S +!(J"9!$J#'!#3#4F!N!F"!!'U9DT9UP@U93#3#!3"!&&SG!!$!!`!#!!!!!`!%3# +3$aa")&0eF'9b8'&TER3J9Q9MG'pb)%4[Bh9YC@jd!!#UD3!!!3!!!!8B!!!%'!! +!!&B!!3j'39"362d!N"F)C(*KGc%ZFh!!!J!!!&039%G68%j8!*!-8e"84e036P3 +!N"M2Y+M&!!!$D!!!"@i!N!d2!*"f!3)!)!%"%"!"!4!3c!!!!$-!!!!4)N3!%5* +%!%3L!)K%)J#)m*!%$j!%Q@CQQCPQCTN!#"`qIciF#!!)&#T9+K3)X6!$'pM!$)f +!%!)J!3K!"!J8)N'!!3)%J-!K%J`%!J(rJ)#!r`J)#!"rIhm!prIhJ%!J!!)%#!# +#4$P%JJ%"!I"i*%+($a)K%#"8U[m#"!MiG#*(MaFLFEqJ[lfpr3Ap)&#)N!3&!P@ +J3%"9#J3%L%3L%4%L4)L"3L3BJ8)N'+S!J!#)!)!!!i4)-!`#!3'!J%%q#!J8ikp +IVem0#`d,GiQ2MhHBq2L)&#*"L!#U!%#J!!!%#J!![`#r[l#3"!!!!3)!)(rrrrr +hrrrrIrrhrhrrprphrrrrGrrrrhIrhIphrphr9IrGreArhIp9rqlr9IqlreAr9Ip +9reArGpehhAIGGpe9[eAr9IY9re@l9Ip9ZeAr9Ep9lPAl9Hj9ZeAZ9EY9lP@l9HT +9Ze@Z9ET9Ue@k9DY9kP@U9Dj9UUT9UP@U9DT9UK@U9DT4UP@U4DT8UN@U9+T%UK@ +U4+T4UN5U%DT%UK'U3+S4UJ5U%DT%UJ#U4+S!UN#U!+S%UJ#))SJLL#+))US!UJ# +U!+S!UJ!4!+S!4!#U!#)!UJ!L!)J!)J#)!#)!L!!J!)J!!J#!!!J!J!!)!)J!!!# +)!!!!J!!!!!J!N!8"!J!J!*$r!!!!!3)!)+U3#!$r!2m!r`$rL*!)Gj!)r`!!!2m +!N!6rrrm!rrrrJ*!)Ij!)r`#3#2q3"mb3#2rr!!$rr`!!riL)L2q)L)J!GhGh!(G +hGrq!N!F!Ij!(L%3L%BK%)K&hZphZGl[GlK%L4)J4)N5)lYflGqlGZhH!3#!3#!3 +#!Aqrhqrhqrhq!3)%#"!J3)$qrI[hlpqrIq"`1"`1"i2"QFaQ-jR-CM1$"`iF1($ +J`60Qc*NcCXbCJ8)N'"JN3S&q[G[RjpZpIS*%+"!S4))"IE[AlpHlIIi!!!%!!!! +&'!!!""J!!!"@!&&Rr"Qf!!!!(!"@!!"3393M!!-!#J$krrm!N!95$U3""2rr!!! +""J"5$d3"'2rr!!!#$!"5$`3"$[rr!!!$%J"5$`JQ#`: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_P_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_P_1.0.hqx new file mode 100644 index 000000000..6a1dc5009 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/SuperPaint_P_1.0.hqx @@ -0,0 +1,71 @@ +(This file must be converted with BinHex 4.0) +:#A"KD@jd-5jcF!"68&4(8e"19!#3"!UX!!!&E[`,%!!!&J!q!)-"l3!"!*"k*!% +!!3!F@,%!N2m!N(-4!D"L$+!!MJ%!#J#3"!,3!N#B!$J!&J!i!%m"m!!@!$i!6`( +Y!"B!2J"2!Hd!!3VX!!!Jp`!!#1S!(`3!!!)!H2i!"4m!%!%!m2`!"J%!3!!)#%$ +l!!!%kJ!I"!!!!J#%rJ!&%)!!!3#)r!!'!3"!!!J!32X!!!6U!#3J!!!&!)#*iFA +3MM&MJ)4`iL@BF@1!J$J2'1,-12!1,$J#kJ!N)!!!"3#!L4)Q%*%4N3#%L4)QC)Q +4!)"%#)K$-N5)%6*%!ZS!*#!!!!L!H)N5*"m2%4%!K)N#*%5*%3#!2!L)3L)mL"% +L4!,U!#3)!!!)J!5*%q33rK%8!)5*!L4%q4%!J%3)L%)L4)J4)R`#kJ!N#!!!(m! +%L4)%%2i4&!#%L3)N4)%4!)"%#)K#)N5)%5*!!ZS!*!J!!""!K*N5*"$q%43!L)N +5C%5*%3"!4!L)3L*%L"%L4!6U!#3J!!!33(KTiF33$a%3`2"`iD4%F4$!3$`2#$) +L22!1)MJ%kJ!5r!!!!I)!!#$l!!#!rJ!!#1S!#[`!!!(V!!#!jJ!#b3!#b3!#b3! +#b3!#b3!#b3!#b3!#b3!#b3!#b3!#b3!#b3!#b3!#b3!(!3!2m2rF!!N"!$M`#!$ +!h3!0!3"Fm"`!)1!!!Mri!!i"!,l`2J!`i3!$2m*!!"B!!Hpr!(Mq!!"rpIm!q2- +!"!IRKi!!&J!"lci!12i!!%re$`!)m`!%I`m2#!!9!!,Z(2i!!&,e%J!Bp!!&"j) +5%K!!&`!#l`J!$2i!!'(e)3!Sp!!!1IiK!5!!&J!#l`!!"2i!!($em!$ip3!!!Ic +`!!!5!!,[#!!-rJ$cH28!!!lmH!!!&3!#lKcq!!"Np53!+28!!$cp*!%J!"8!!Zm +q!$cq!24#!%Me!!$#r8)"3!!A!!2[I`"mrJ!!4r@(!)Mf!!!$r)F"J!!9!!,[2J! +mrJ!!6r82!!Mf!2X2!3J!&3!#lKcq!!"5p4)!'2B!!$,m%J%3!"F!!Zm)!!cq!!" +Kp5%!+2B!!1(m)3%J!"B!!Zm!!!6q!!"`pI!!q2F!!!2km!!!%J!#l`J!$2i!mhM +h!!!-qRJ!!"8!!ZiFrJ!!C28N!#Mh!!!Fqb3")!!9!!,[2J!mrJ$d3J")p`!!B[Y +#!8!!&`!$lhm!I2i!!%IeK`#)p`!!arZ(!B!!&`!#lci!22i!!%re$`!)q!!!!rS +2!3J!&3!#lKcq!!"5p4)!'2J!!!Ek%J%3!"F!!Zm)!!cq!!"Kp5%!+2J!!!Rk)3% +J!"B!!Zm!!!6q!!"`pI!!q2J!!"$jm!!!%!!#l`J!$2i!mhMi!2Ki!!!9!!,Z(2i +!!'6e*!!Sq!!!j2SN!5!!&J!#lci!22i!p%)!52N!!3(#qN)"3!!A!!2[I`"mrJ! +!4r@(!)Mj!!!$qBF"J!!A!!,[2J!mrJ!!6r82!!Mj!!!(q3m"#!!9!!,Z(2i!!&, +e%J!Bq3!!#[N5!4!!Q!!i!%m!1!#$!I!!6`!q!)-"l3"2!$i!J`(Y!!%A!!,[#!! +-rJ!!BI8K!#Mj!!!4q5%")!!@!!,[!!!%rJ!!F2A`!2Mj!!!`q2!!!"!!!Zm)!!c +q!20iq3$hH!!!&3!#lKcq!!"Np53!+2N!!16j*!%J!"8!!Zmq!$cq!24#!%Mj!!$ +#q8)"3!!A!!2[I`"mrJ!!4r@(!)Mk!!!"q)F"J!!A!!,[2J!mrJ!!6r82!!Mk!!! +$q!m"#!!9!!,Z(2i!!&,e%J!BqJ!!"[J5!4!!&`!#l`J!$2i!!'(e)3!SqJ!!$IJ +K!5!!&J!#l`!!"2i!!($em!$iqJ!!#2I`!!!5!!,[#!!-rJ$cH2S!!"MhH!!!&3! +#lKcq!!"Np53!+2S!!$6i*!%J!"8!!Zmq!$cq!24#!%Mk!!!Lq%)"3!!A!!2[I`" +mrJ!!4r@(!)Mk!!"(q)F"J!!A!!,[2J!mrJ!!6r82!!Mk!!"2q!m"#!!9!!,Z(2i +!!&,e%J!BqJ!!N[J5!4!!'!!#l`J!$2i!!'(e)3!Sq`!"!D(i)3%J!"B!!Zm!!!6 +q!!"`pI!!q2X!!!(fm!!!%J!#l`J!$2i!mhMl!!!$pRJ!!"8!!ZiFrJ!!C28N!#M +l!!!#pb3")!!9!!,[2J!mrJ$d3J")q`!!![G#!8!!&`!$lhm!I2i!!%IeK`#)q`! +!"rH(!B!!&`!#lci!22i!!%re$`!)q`!!"rF2!3J!&3!#lKcq!!"5p4)!'2X!!!V +h%J%3!"F!!Zm)!!cq!!"Kp5%!+2X!!!Rh)3%J!"B!!Zm!!!6q!!"`pI!!q2X!!!M +fm!!!%J!#l`J!$2i!mhMl!!!BpRJ!!"8!!ZiFrJ!!C28N!#Ml!!!8pb3")!!9!!, +[2J!mrJ$d3J")q`!!%[G#!8!!&`!$lhm!I2i!!%IeK`#)q`!!*rH(!B!!&`!#lci +!22i!!%re$`!)q`!!,rF2!3J!&3!#lKcq!!"5p4)!'2X!!$,h%J%3!"8!!Zm)!!c +q!!"Kp5%!+2X!pL%")!!@!!,[!!!%rJ!!F2A`!2Ml!!"`p[!!!"!!!Zm)!!cq!20 +iq`$eH!!!&3!#lKcq!!"Np53!+2X!!'6h*!%J!"-!!Zmq!$cq!24#!%Ml!2C#!8! +!&`!$lhm!I2i!!%IeK`#)q`!!4rH(!B!!&`!#lci!22i!!%re$`!)q`!!MrF2!3J +!&3!#lKcq!!"5p4)!'2X!!*,h%J%3!"F!!Zm)!!cq!!"Kp5%!+2X!!+(h)3%J!"3 +!!Zm!!!6q!!"`pI!!q2X!pI!!!")!!Zm)!!cq!20iq`!!q2Ci!!!9!!,Z(2i!!'6 +e*!!Sq`!!T2FN!5!!&3!#lci!22i!p%)!52X!!-,h3J&!!"8!!qpr!(cq!!"rpIm +!q2X!pSF"J!!)!!([2J!ih3!)!!([(!!Bh3!*!3#)m!J!%0d!#3%!32!!!#$G!!N +"!$M`#!$!h3!(!3!2m2rF!+!!Mrm!!$TX!!!"!!!!"4J!!!3B!!!!9P*cE(C"8&" +-!3#3"JC0!J%!#`&5Ffaf8R0$8`%!#A"KD@jd-5jcF!)!!!"68&4(8e"19!#3$&0 +39%G68%j8!*!Bcl5SF`!!#U`!!!9Z8R0XGP*c9h-"!*!'"Ni#!3!,!9*cE(C5FeG +c!3#3"JC1!J%!#`&5Ffaf8R0AF`%!N!B'6J)"!!X"8R0XGP*c9h-"!*!'"Ni#!3! +,!9*cE(C5FeGc!3#3"JC1!J%!#`&5Ffaf8R0AF`%!N!B'6J)"!!!!!3)!)!%"%"! +"!4!3c!!!!$-!!!!4)N3!%5*%!%3L!)K%)J#)m*!%$j!%Q@CQQCPQCTN!#"`qIci +F#!!)&#T9+K3)X6!$'pM!$)f!%!)J!3K!"!J8)N'!!3)%J-!K%J`%!J(rJ)#!r`J +)#!"rIhm!prIhJ%!J!!)%#!##4$P%JJ%"!I"i*%+($a)K%#"8U[m#"!MiG#*(MaF +LFEqJ[lfpr3Ap)&#)N!3&!P@J3%"9#J3%L%3L%4%L4)L"3L3BJ8)N'+S!J!#)!)! +!!i4)-!`#!3'!J%%q#!J8ikpIVem0#`d,GiQ2MhHBq2L)&#*"L!#U!%#J!!!%#J! +![`#r[l#3"!!!!3)!)(rrrrrhrrrrIrrhrhrrprphrrrrGrrrrhIrhIphrphr9Ir +GreArhIp9rqlr9IqlreAr9Ip9reArGpehhAIGGpe9[eAr9IY9re@l9Ip9ZeAr9Ep +9lPAl9Hj9ZeAZ9EY9lP@l9HT9Ze@Z9ET9Ue@k9DY9kP@U9Dj9UUT9UP@U9DT9UK@ +U9DT4UP@U4DT8UN@U9+T%UK@U4+T4UN5U%DT%UK'U3+S4UJ5U%DT%UJ#U4+S!UN# +U!+S%UJ#))SJLL#+))US!UJ#U!+S!UJ!4!+S!4!#U!#)!UJ!L!)J!)J#)!#)!L!! +J!)J!!J#!!!J!J!!)!)J!!!#)!!!!J!!!!!J!N!8"!J!J!*$r!!!!!3)!)+U3#!$ +r!2m!r`$rL*!)Gj!)r`!!!2m!N!6rrrm!rrrrJ*!)Ij!)r`#3#2q3"mb3#2rr!!$ +rr`!!riL)L2q)L)J!GhGh!(GhGrq!N!F!Ij!(L%3L%BK%)K&hZphZGl[GlK%L4)J +4)N5)lYflGqlGZhH!3#!3#!3#!Aqrhqrhqrhq!3)%#"!J3)$qrI[hlpqrIq"`1"` +1"i2"QFaQ-jR-CM1$"`iF1($J`60Qc*NcCXbCJ8)N'"JN3S&q[G[RjpZpIS*%+"! +S4))"IE[AlpHlIIi!!!%!!!!&'!!!""J!!!"@!&&Rr"PB!!!!(!"@!!"3393M!!- +!#J$krrm!N!95$f3""2rr!!!""J"5$e`"'2rr!!!#$!"5$h!"$[rr!!!$%J"5$fM +L%3: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_1.0.hqx new file mode 100644 index 000000000..a692cf555 --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_1.0.hqx @@ -0,0 +1,104 @@ +(This file must be converted with BinHex 4.0) +:#@4bBAFa,RG`G`"#9f4b3PGVF`#3""3i!!!"BJAL3PGVFd*AC(*#9f4b!*!&!3# +3"`%!N!B""`#3"!32!!N!!!!*!*!-!3#3"!F!!3!2!!!!5!")!*!%![!#32rarqi +$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3# +3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3%!!!%(!*!)!3F!N$J'4f9ZCACK!!!!"!! +'!!!44!!!!(!!!!@S!!!2c!!'!!!4[!!!%``!!!!#!*!%!YS#+)!"!!%!#3!!!!N +!!!!"!*!&#!!"!!!!!3!!!!)!!3!"!!!!!3#3"4N!'3!"!!`!N!8K!!$rr`#3#B! +!J!#%!!B!J!!+!!!&+!#3&[q3#!!!)&#)N!3&!J#3""`L)L)F!!!!9D"!3&8+"!3 +!!+SUkJVk![i!!!#r!,qrX*!%!!#[AkpI$3X0#`!!GiQ2MhHBq2J!!-0Q2'E$CMa +Q!!!)+K4M&#S)J!!!!%"FA&a!IJ!!!!JF2Rrhim'!!!!!%"$qI$KX4!!!!"`qIhp +r2K`!!)"!)!!#"!J!!!!"!4!3!3%3%!!!%5*%!"%L4!!!!&99UUT99DUU!!#a-!- +Ef-!-M3!!L%3L%4%L4)J!!)#!36i)#"6M!!#U!)!!L!#!!!!!%*!&+-BS!!!)(#, +"J!%#"!!!#"3L3B!"!J3!!2q!J)$r#!J)!!$iG#*(MaFLF3!!UVqJ[kVl#[X!!2# +3"!q3"!!!!!JF2Rmq(!J!!%#J!!!%#J#3"-`!!!!c!*!&4#)!L%3L!)J!!-`cc$2 +--m`c!!#!%!)J!3K!"!!!J8)N')&#*"J!!!1%5$!-!J%"!!#)&#*"L!#U!!!!JN3 +j4))"!3%!!"!J9+Vr!J3)!!#!`#%5$!3#!3!!!(prI`$hprF!!2"i*%+($a)K!!# +rS,qp[Id&r3!!Q@CQQCPQCTN!!!!)&#T9+K3)!!#!!!!!#!#3"B!!#!#!!!J!!!# +)!#)!L!!L!!!!UJ!4!+S!4!!!!)JLL#+))SJL!!#U4+S!UN5U!!!!UN5U%DT%UK% +!!+T&UP5U4DT8!!#U9DT9UP@U93!!9ET9Ue@k9DX!!&@l9Hj9ZeAZ!!"9ZeAr9EY +9r`!!GpehhAIGGpd!!&Arl[p9rl[r!!"hrphrGrrGr`!!Irrhrhrrprm!!)J!!!# +)!*!&L!!J!)J!!J!!!+S!)J#U!#)!!!#U!+S!UJ#U!!!!UN#U!+S%UJ!!!+T!UK' +U"+S4!!#U4+S9UN5U83!!UK@U9DT4UP8!!&AU9DT9VP@U!!"9ZeAU9EY9VJ!!9Ep +9lPAl9Hi!!&@r9Ip9qeAr!!"9reAr9Ip9r`!!9IrGreArhIm!!(Irrrphrrrr!!" +rrrrrprrrr`!!UT!)!!$-N!J!!)L3#!!!J*!)!!$r!!!!r`#3"Im!N!RrL)L)riL +)L!!!ri#3"`!!%5*%L"%L4)J!!)K%)K')4#)4!!#$"`iF1($J`3!!i(!i(!i(Jm% +!!!%#"!J3)%#!!!#!3#!3#!3#!3!!JN3S%#K%JJ%!!)&#*"JB*%+"!!!!r`$r!2m +!r`!!rrm!!2rr!*!%Gj!)!!"rN!J!!!$rrrm!rrrr!!!!rj!(!!!!GhGh!(GhG`! +!!(q3"`!!lYflGqlGZhF!!(HlhHjhZphZ!!!cCXbC-fE-Q3!!QFaQ-jR-CM-!!2l +pqrI[hlpr!!"r[pr[pr[prJ!!IE[AlpHlIIi!!(kpfqIRfleq!*#JrhmJD!!))&! +L!2pq!$K)3F,m!$MrI8*"d)%`-!JZ!!"1G8j@!!!JEJ%!!3!"!J!'!3!!#J!!#K3 +!!!!Hrj!'!!!!)3#3#8Amr22c"38!!!#*m[))#)5%!!!!cGhG#!J'"J!!!4%#!UZ +VkZS!!!&9!!#!J"%4!!!"Q3#3"068!!!!(Yf3"J!!!"l-N!B!!!!HZj!'!!!!(UU +3"J!!!"k)N!B!!!!KCT!'!!!!)853"J!!!#%LN!B!!!!K!*!*)8c-$K-!N!8K6-` +F*`#3"5&-c#Sm!*!&)8c-1&!!N!8K6-a'C3#3"!&945"-c!#3"!&90`Y-c!#3"!& +9+2K-c!#3"!&9'Z*-c!#3"!&9$-p-c!#3"!&9!!"-c!&)!!!"93!!6-`2@`!!!98 +!!%c-(A!!!!&9!!"-c#Z%!!!"93!!6-`jQ3!!!-f&(L0p!*!&cB8H''B!N!A0K4i +`c!#3"Ff&(NNe!*!&cB8HBC`!N!A0K4jk"3#3"!&9Gp+&(J#3"!&9AfQ&(J#3"!& +94`1&(J#3"!&9,TU&(J#3"!&9&M1&(J#3"!&9!!#&(J)i!!!"93!!K4iDRJ!!!98 +!!)8H-`F!!!&9!!#&(NYY!!!"93!!K4jMe`!!!-fpF$+"!*!&cEe`)VN!N!A0[A" +&FJ#3"FfpF'J[!*!&4Ee`LZF!N!9&[A#YT3#3"8@UK,e`!*!&4BI([A!!N!3"9@8 +1[A!!N!3"98*4[A!!N!3"94qB[A!!N!3"93!![A!$+!!!!98!!,e`*H%!!!&9!!# +pF%LH!!!"93!![A"V9`!!!4%!!,e`MK3!!!$0pF*"K3#3"Fhe`Ld,!*!&cIA#@KF +!N!9&pF+(+!#3"8Ae`V3c!*!&4IA#i88!N!9&h6Ee`J#3"8@`*IA#!*!&4B-CpF) +!N!3"99B)pF)!N!3"95MppF)!N!3"93!!pF)%'!!!!98!!2A#-53!!!&9!!$e`Pi +e!!!"%3!!pF+,3!!!!4%!!2A#Z&)!!!$0rrpQ#bi8!!!!cIrr9)iZ&!!!!-hrrhX +),K3!!!"&rrqKKbi8!!!!4Irrb!%Z&!!!!%Arrqjr,K3!!!"&k`Mrrbi8!!!!4F5 +*rrmZ&!!!!%@H$rrr,K3!!!&9Gj(rrbi8!!!"99%ArrmZ&!!!!98Z&2rr-C-!!!& +9,K6rreJ0!!!"%5i8rrpqM!!!!4%Z&2rrT3B!!!%4,K6rrmZ&!!!!4IrrMePQCJ! +!!%Arri+0CQB!!!"&rrqHY@CQ!!!!4IrrZYpQCJ!!!%ArrpF(CQB!!!"&rrrc-QC +Q!!!!4I#SrrpQCJ!!!%A8IIrrCQB!!!"&Z&ErrfCQ!!!!4C`VrrpQCJ!!!%@!"2r +rCQB!!!&9CQErrfMe!!!"%@CQrrq&(!!!!4&QC[rrS8F!!!%4CQErrle[!!!"%@C +QrrrCQJ!!!"lrrlLRRVJ!!!!Hrrq`MCki!!!!([rr`Q'HZ!!!!"lrrp3iRVJ!!!! +HrrrQ$Cki!!!!([rrpq5HZ!!!!"lf52rrRVJ!!!!Hj(,rrjki!!!!(Y+GrrqHZ!! +!!"l!a[rrRVJ!!!!HV[(rrjki!!!!(TkirrqJ9`!!!"kHZ2rrXL`!!!!HRVMrrm3 +#!!!!(Tkirrr9e`!!!"kHZ2rrjki!!!!HrrrKpYF+!!!!([rrhScA#J!!!"lrrqB +1e`S!!!!HrrrYNGF+!!!!([rrp42A#J!!!"lrrrb@e`S!!!!HqqRrrpF+!!!!([4 +QrrrA#J!!!"lXj2rre`S!!!!Hj@(rrpF+!!!!(YhIrrrA#J!!!"lA#[rrelN!!!! +He`Vrrpml!!!!(YF+rrrQ[J!!!"lA#[rrlN!!!!!He`VrrrA$!!!!(YF+rj!%!!! +!(YF+q(lrr`!!!"lA#[$mrrm!!!!He`VTHIrr!!!!(YF+iIIrr`!!!"lA#YTdrrm +!!!!Hfb(A#[rr!!!!(Z+Ne`Vrr`!!!"lU*YF+rrm!!!!HmDRA#[rr!!!!([NVe`V +rr`!!!"lrrpF+re%!!!!HrrrA#[I2!!!!([rre`V`6!!!!"lrrpF+k-S!!!!Hrrr +A#Z&)!!!!(TkirrrrrJ!!!"kHZ1iVrrm!!!!HRVMF9rrr!!!!(TkibS$rr`!!!"k +HZ,LVrrm!!!!HRVLQe2rr!!!!(UK`RVMrr`!!!"kk4Tkirrm!!!!Hc"ZHZ2rr!!! +!(YhbRVMrr`!!!"l[ajkirrm!!!!HrrqHZ2jK!!!!([rrRVMXM!!!!"lrrjkifVB +!!!!HrrqHZ-MK!!!!([rrRVLh#J!!!4&QC[rrrri!!!%4CQEMfIrr!!!"%@CQal( +rr`!!!4&QCUZ(rrm!!!%4CQD2Arrr!!!"%@CQFc6rr`!!!4&e[QCQrrm!!!#*NHP +QC[rr!!!!LDi3CQErr`!!!)R+1fCQrrm!!!#*jQ*QC[rr!!!!LIrrCQEpF3!!!)R +rrfCQi8S!!!#*rrpQCX8I!!!!LIrrCQDSp`!!!)RrrfCQM-d!!!%4,K6rrrrp!!! +"%5i8fBErr`!!!4%Z&,--rrm!!!%4,K5-MIrr!!!"%5i8CK2rr`!!!CNZ&$q9rrm +!!!'C3``Z&2rr!!!"Q@Q,,K6rr`!!!)Q3!!8Z&2rr!!!!LED$,K6rr`!!!)RFr5i +8rrm!!!#*rrmZ&2b"!!!!LIrr,K6@"`!!!)Rrrbi8ViJ!!!#*rrmZ&)N1!!!!LIr +r,K4LM`!!!4%!!2A#pEi!!!%4!!$)YrA#!!!"%3!!Qk[e`J!!!4%!!'kDpF)!!!' +C!!""MrA#!!!"Q3!!&(he`J!!!CNBM!!!pF)!!!'C4Cd!!2A#!!!"QA+T!!$e`J! +!!)QIZJ!!pF)!!!#*c-8!!2A#!!!!LIA#!!$aUJ!!!)Re`J!!a*i!!!#*pF)!!*H +0!!!!LIA#!!"UJJ!!!-he`J!!2A%!!!%4!!#pF,eY!!!"%3!!QVHpF!!!!4%!!(I +q[A!!!!'C!!"93Ee`!!!"Q3!!-SQpF!!!!CN!!!r,[A!!!!'C%Z`!!,e`!!!"Q6@ +T!!#pF!!!!CPBBJ!![A!!!!#*Ham!!,e`!!!!LChB!!#pF!!!!)QpF!!!ZNJ!!!# +*[A!!!*H2!!!!LEe`!!"ddJ!!!)QpF!!!8KN!!!$0[A!!!#pF!!!"%3!!K4k&(!! +!!4%!!'biK4i!!!'C!!"88S8H!!!"Q3!!1qQ&(J!!!CN!!#1#K4i!!!'C!!!,'B8 +H!!!"Q3e-!!#&(J!!!CNPY3!!K4i!!!'C2KX!!)8H!!!"Q9D%!!#&(J!!!CPZk`! +!K4i!!!#*K4i!!),Q!!!!cB8H!!"UJ!!!!-f&(J!!8KF!!!$0K4i!!$Qa!!!!cB8 +H!!!K52lrrr`J8#&,!!B!!"M)rqK1ANje!!)!!J!'!!B!!J!m!!!"D!#3#2rp!!! +!$!!!!!3!N!X-!!!!"!!!!!`!N!F-!!$rr3#3$3%!N!6rmJ!!!!i!!!!1!!!!RB! +!!#d!N!F#!*!Drre-c#Sm!!!!%dc-1&!!!!!86-a'C3!!!"9&)%c-!!!!&MF,6-` +!!!!A+2K-c!!!!"JDiNc-!!!!'3c2rr`!!!!D!!"-c!&)!"X!!%c-$eX!(!!!6-` +GF!!G!!"-c#Z%!"i!!%c-1CN!(i8H)hd!!!!JK4iBCJ!!rrZ&(M$-!!!!)S8H568 +!!!!MK4jKR!!!!#5&(RS&!!!!*AI5K4i!!!!QAfQ&(J!!!#G(!i8H!!!!+#kD!*! +&+4BcK4i!!!!U!!#&(J)i!#X!!)8H'Ti!,!!!K4ic"`!Y!!#&(NYY!#i!!)8HBpF +!,le`-S%!N!33!3!4J!!!8)!!!'1!!!&IJ!!!!4!(!$B!!!"e!!!!5J!!!4i!!!! +#%!%!KS!!!$k!!!$KJ!!!f)!!!!-3!J#'J!!"$B!!!21!!!'$J!!!""!$!''!!!" +U!!!!L)!!!*)!!!!&%!-!BB!!!5F!!!#)J!!"6`!!!!%!N!8)!!%!!!!"!!!!!J! +"!%N!!!!h!%S!!!!C!"N!!!!-!*!)rrm!N!N(!*!&#!!"!!!!!3!!!!)!!!"*!!! +!#3#3"4N!'3!!!!`!N!8K!!$rr`!!!!`!N!8"!*!&#!!"!!!!!3!!!!)!&`"*!!! +!3J$C!!!!'3!C!!!!$!#3#2rr!*!*!J#3"3J!!3!!!!%!!!!#!$X!53!!!#3!C3! +!!"N!'3!!!!`!N!Mrr`#3#3-!!!!"!!J!!`!!!!3!!!!#!!%!53!!!#3!N!8C!"N +!N!crr`#3#3-!!!!4!!J!!`!!!!3!!!!#!!%!53!!!#3!N!8C!"N!!3#3#[rr!*! +*!3!C!"!!83!!!"P")%*PB@GXC9G[FQYc*h-JC(*KGb"QD@aP#8`!!!%!!!!"(!! +!!"`!!!"'UY$T!!J[##"Zrr`JD!#U)QJ!$%k4F!"36f!#F!"`!#m,+Q4bBAFa,RG +`Gc!#!!!!3PGNFN*ADh-!N!T#9f4b3PGVF`#3'-qdeM3!N!B"BJ!!M+-H+%JJ$'F +B,`a1Z[X)+%!TI!!!!0)!IKPm!!%!KPK2)!`SE[rm6Pj1G3!!%RB2m!!Q6PB!!%M +R!"JQEJ!F+'i!##m,,bi!'$!Z!"C)`#m!-#i!%NM!,`![,J!-,`a1V3jU)%XLD`! ++d1N!Q#m))%NLD!#F6T%j3!!`61iB!2m!!!!-#d*PB@GXC9G[FQYc!!!!#!"1!!) +"h!*f!!!"!!!!!4`!!!!F!!!!4J!YD,`AJJ!!!"`!4J!"8e45)!!!!"*h8'pc!!! +!(Vrdrrm!N!8YBJ3$kIrr!!!!%!#3",il: diff --git a/writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_P_1.0.hqx b/writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_P_1.0.hqx new file mode 100644 index 000000000..413a8fdbf --- /dev/null +++ b/writerperfect/qa/unit/data/draw/libmwaw/pass/WordPerfectWorks_P_1.0.hqx @@ -0,0 +1,137 @@ +(This file must be converted with BinHex 4.0) +:#R"KD@jd-5jhF(F!3PG`G%*ADh-!N!3BX3!!!@+H,%*ADh0#9h"d3PG`G!#3"3% +!N!F"!*!'!3F!N!3%$!!*!!!!#3#3$!%!N!3(!!%!$`!!!%J!5!#3"!,`!N$rmIr +Z!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3!#!!!!!5F2!!% +!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!!!""`#3#!%(!*!i"NGPEQ9fB3!!$i3 +!!!J)!Y!#3!!"!*!Ar`!!rj!'!!(mr22c"38!![,b#!L%K!!$hGd)#!B'!!3#!UZ +VkZS!"3!!J)!4%3!'!*!%e03!"pf3"J!)c*!'!!QlN!B!#UU3"J!,L*!'!!aQN!B +!$853"J!1)T!'!!m!N!F36-`1%`!!!"&-c"`R!!!!%Nc-+M`!!!!66-`i8!!!!"4 +-c%CP!!!!&88J6-`!!!!@0`Y-c!!!!"FSq%c-!!!!'"VL6-`!!!!C$-p-c!!!!"S +!!%c-!8J!'`!!6-`2@`!F!!"-c"e`!"d!!%c-+i3!(J!!6-`jQ3!IK4iMI3!!!## +&(KKQ!!!!)B8H--`!!!!LK4j*03!!!#1&(Q'F!!!!*)8HHJ8!!!!PGp+&(J!!!#C +IDB8H!!!!*dF$K4i!!!!S,TU&(J!!!#N@-i8H!!!!+J!!K4i#1!!V!!#&(KUH!#` +!!)8H-`F!,3!!K4j,E3!Z!!#&(Q2A!#qpF$+"!!!!-,e`)VN!!!!a[A"&FJ!!!$+ +pF'J[!!!!-le`LZF!!!!d[A#YT3!!!$@UK,e`!!!!0SI([A!!!!!hC3kpF!!!!$K +#8Ee`!!!!14qB[A!!!!!k!!#pF!-S!$X!!,e`*H%!2!!![A")RJ!p!!#pF'YA!$i +!!,e`MK3!2rA#3B8!!!"!pF)Y#`!!!%(e`PSA!!!!3[A#KbJ!!!"$pF+d-`!!!%6 +e`Z&&!!!!4GdfpF)!!!"'X#Ae`J!!!%H$'IA#!!!!5&B)pF)!!!"*+2he`J!!!%S +!!2A#""J!5`!!pF)a*!"-!!$e`Pie!%d!!2A#Ld!!6J!!pF+i8J"2rrpQ#bi8!&$ +rre51,K3!8IrrH`JZ&!"5rrqKKbi8!&2rrmJ",K3!92rrlRmZ&!"9k`Mrrbi8!&E +%LIrr,K3!9ji2rrmZ&!"BGj(rrbi8!&P4&rrr,K3!@Li8rrmaN`"E,K6rreJ0!&` +Z&2rrIS`!A5i8rrqP"J"H,K6rrmZ&!&rrripCCQB!B2rrJSeQCJ"KrrqHY@CQ!', +rrlVICQB!Brrre`GQCJ"Nrrrc-QCQ!'A`U2rrCQB!CY4prrpQCJ"RZ&ErrfCQ!'L +F+rrrCQB!DB!%rrpQCJ"UCQErrfMe!'YQC[rrK4`!E'CQrrqK4`"YCQErrle[!'j +QC[rrfCS!ErrrZ+HHZ!"`rrq`MCki!((rrm*KRVJ!F[rre$LHZ!"crrrQ$Cki!(6 +rrrINRVJ!GIC)rrqHZ!"fj(,rrjki!(I5RIrrRVJ!H-$'rrqHZ!"jV[(rrjki!(U +HZ2rrS&F!Hjkirrqb,!"mRVMrrm3#!(fHZ2rreGF!ITkirrrRVJ"rrrrKpYF+!)$ +rrpk-e`S!JIrrjJlA#J##rrrYNGF+!)2rrr86e`S!K2rrr*EA#J#&qqRrrpF+!)E +dC[rre`S!KqcNrrrA#J#)j@(rrpF+!)RGhrrre`S!LYF+rrrAZ3#,e`Vrrpml!)c +A#[rrjVi!MGF+rrrZ3!#1e`VrrrA$!)rA#[q3"!#3!0F+q(lrr`#4e`V`r2rr!*, +A#ZPjrrm!NpF+iIIrr`#8e`VDG2rr!*AE)GF+rrm!PZ+Ne`Vrr`#AkLEA#[rr!*M +aUGF+rrm!QINVe`Vrr`#DrrrA#[p4!*[rrpF+pmm!R2rre`V`6!#GrrrA#ZM+!*l +rrpF+i8J!RjkirrrrrJ#JRVMZ+rrr!+'HZ0aArrm!STkibS$rr`#MRVLiUrrr!+5 +HZ+E8rrm!TDK`RVMrr`#QZNDHZ2rr!+I-'jkirrm!U0hbRVMrr`#TlmHHZ2rr!+V +rrjkirQ%!UrrrRVMXM!#XrrqHZ0Uf!+hrrjkib1%!V[rrRVLh#J#[CQErrrrq!," +QCZ2Crrm!X@CQal(rr`#bCQDVKrrr!,0QCSpIrrm!Y'CQFc6rr`#eGEjQC[rr!,D +4k@CQrrm!Yki3CQErr`#ibMYQC[rr!,RQBQCQrrm!Z[rrCQEpF3#lrrpQCZ&+!,c +rrfCQa4m![IrrCQDSp`#qrrpQCSc0!,mZ&2rrrrd!`#i8fBErr`$",K5c$2rr!-) +Z&)b0rrm!`bi8CK2rr`$%,K3rPIrr!-9$$#i8rrm!aQQ,,K6rr`$(N!!&,K6rr`$ +)YS-Z&2rr!-RFr5i8rrm!b[rr,K6mJ3$,rrmZ&0B(!-crrbi8ViJ!cIrr,K5*$J$ +1rrmZ&'+2!-m!!2A#pEi!d!!!b,Ie`J$4!!#EUrA#!0)!!'kDpF)!d`!!3Bre`J$ +8!!!8IIA#!08BM!!!pF)!eN@G!!$e`J$AFUN!!2A#!0LIZJ!!pF)!fFc&!!$e`J$ +DpF)!!2'U!0[e`J!!a*i!h2A#!!#AM3$GpF)!!'U#!0le`J!!2A%!h`!![A#pE3$ +J!!#DYle`!1%!!(Iq[A!!iJ!!98'pF!$M!!!bLEe`!13!!!r,[A!!j4,X!!#pF!$ +Q0DN!!,e`!1GBBJ!![A!!k(XI!!#pF!$TRGJ!!,e`!1UpF!!!ZNJ!kle`!!#AM`$ +X[A!!!(65!1fpF!!!8KN!lVe`!!![A!$[!!#&(S8F!2!!!'biK4i!m3!!9&+&(J$ +b!!!lkB8H!2-!!#1#K4i!p!!!#aQ&(J$e$8`!!)8H!2BPY3!!K4i!pciE!!#&(J$ +i9S3!!)8H!2PZk`!!K4i!qS8H!!##jJ$lK4i!!'U!!2b&(J!!8KF!rB8H!!!jX3$ +qK4i!!#&)!2m!N!B2K!#3"!,3!N!!%3,r$!$rN!3!N!J#3!!!!Y!!N!HJ!))!!3! ++!*!%!Y!#3!#B!%J!N!3#d!*!!*!%!Y!#3!#3"!,3!N!!!!+j!!+j!!+j!!+j!!+ +j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+ +j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+ +j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+j!!+ +j!"Rc!!X#!2J!!!B!3%!!3!(q!!3)!)!BM0X!&r-!#`)!K!!!!J"!3!"!!I`!!S! +J"0X!'[-!&!8!K($KiKa%4aG%F"`(KaLa`('%10`!'[-!&!8!q)N5)L)NL*K)L#) +%5)M)J##%40`!'[-!&!L!K)Mb)L)UL*!!8)!J"%H)L)!JK%6F!"Vc!"3)J)6j%L) +q+SL3!'"`(!4)L)L!))4mh!!Dm`!8(m#%J4)L)"%)N!"3#!)%5)L)J##%30`!'[- +!&""!K)N5)L)4#*!!5)JL"%L)L)!JK%6F!"Vc!"3332K`mH)F%3F34(!F"iH)L'! +JK$MF!!VZ!!!JqJ!!"08!#qm!!3)JqJ!!"08!"qm!!3(!c3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!1q3!!$q[r!-$e!2k +!k!!5q3!!$q[r!-$h!!!"r8%!31N!$[N!!!rVr`$!p`$l2ZN!$[N!!!rVr`$!q!$ +k#1N!$[N!!!rVr`$!q!$j#1S!%2N!!!rVr`$!q3!!"2N8kJ!5q3!!$q[r!-$j!!! +MqH-!i1X!$[N!!!rVr`$!q3$hJ1X!$[N!!!rVr`$!q3$fJ1`!%[N!!!rVr`$!qJ! +!!IG"!%$X!"$j!!!2krm!`2S!pMi!21`!$[N!!!rVr`$!qJ$e#1`!$[N!!!rVr`$ +!qJ$e#1`!%2N!!!rVr`$!q`!!"288l!!5q3!!$q[r!-$l!!!$pH-!i1d!$[N!!!r +Vr`$!qJ$dJ1d!$[N!!!rVr`$!q`$cJ1d!%2N!!!rVr`$!r!!!!I0"l3!3q3!!$q[ +r!-$m!!!#mclY!!lj!!!2krm!`2X!m`MY!!lj!!!2krm!`2`!mJMY!"$j!!!2krm +!`2`!mK3!%1i!%[N!!!rVr`$!r!!!)r2M!1$Z!!lj!!!2krm!`2X!mS$Z!!lj!!! +2krm!`2X!mS$Z!"$j!!!2krm!`2`!mN%!31i!$[N!!!rVr`$!r!$a2Zi!$[N!!!r +Vr`$!r!$a#1i!$[N!!!rVr`$!r!$a#1i!$[N!!!rVr`$!r!$a&1i!%[N!!!rVr`$ +!r3!!!r(M!)$[!!lj!!!2krm!`2`!m)$[!!lj!!!2krm!`2`!m)$[!",j!!!2krm +!`2d!!!(a33"!l`!5q3!!$q[r!-$p!!!1m6i!)1m!$[N!!!rVr`$!r3$`#1i!$[N +!!!rVr`$!r3$`#1i!%2N!!!rVr`$!r3!!"2%8lJ!5q3!!$q[r!-$p!!!$mH-!i1m +!$[N!!!rVr`$!r!$`J1m!$[N!!!rVr`$!r!$`J1m!%[N!!!rVr`$!r3!!!I&"!%$ +[!",j!!!2krm!`2d!!!la2J!Jl`!1q3!!$q[r!-$p!2!)lJ!1q3!!$q[r!-$m!2% +)lJ!3q3!!$q[r!-$p!!!%m46Z!",j!!!2krm!`2d!!!2ai`$!l`!1q3!!$q[r!-$ +m!2#!l`!1q3!!$q[r!-$m!2#!l`!3q3!!$q[r!-$p!!!"m8(Z!!lj!!!2krm!`2` +!m6lZ!!lj!!!2krm!`2`!m3MZ!!lj!!!2krm!`2`!m3MZ!!lj!!!2krm!`2`!m46 +Z!",j!!!2krm!`2`!!#2ci`$JlJ!1q3!!$q[r!-$l!2+!lJ!1q3!!$q[r!-$l!2+ +!lJ!5q3!!$q[r!-$m!!!"md%!31i!%2N!!!rVr`$!r!!!"[-ql3!1q3!!$q[r!-$ +l!2-)l3!1q3!!$q[r!-$l!2-)l3!1q3!!$q[r!-$l!2-8l3!5q3!!$q[r!-$l!!! +MpH-!i1d!$[N!!!rVr`$!qJ$dJ1d!$[N!!!rVr`$!qJ$dJ1d!%2N!!!rVr`$!q`! +!!I9"l!!1q3!!$q[r!-$k!28ql!!1q3!!$q[r!-$k!28)l!!1q3!!$q[r!-$k!2B +)k`!3q3!!$q[r!-$k!!!%pa6V!"$j!!!2krm!`2N!q1-!iZX!$[N!!!rVr`$!q!$ +iJ1X!$[N!!!rVr`$!q!$iJ1X!%2N!!!rVr`$!q!$k33"!kJ!5q3!!$q[r!-$i!!! +1qci!)1S!$[N!!!rVr`$!p`$l#1N!$[N!!!rVr`$!pJ$p#1J!%2N!!!rVr`$!pJ! +#""38j`!+q3!!$q[r!-$C!!Vj!!!2krm!`0N!#[N!!!rVr`$!f3!+q3!!$q[r!-$ +C!!Vj!!!2krm!`0N!#[N!!!rVr`$!f3!+q3!!$q[r!-$C!!Vj!!!2krm!`0N!#[N +!!!rVr`$!f3!+q3!!$q[r!-$C!!Vj!!!2krm!`0N!#[N!!!rVr`$!f3!+q3!!$q[ +r!-$C!!+j!!+j!!EG!!!%hJ!(h3!"!q$I!!IF!!'!J1!!"p`!!B#!i!!+hJ!!!Ij +"!%$K!!MH!!!'r6lK!!EH!2X)iJ!'hJ$l#1)!"Yi!qK6M!!VI!!!"qZ-!iZ3!"Yi +!q)$P!!EH!2H!jJ!+h`!!!IG"!%$R!!MI!28q!$$S!!EI!23)k!!'h`$c#1N!#1! +!!!6b&1S!#Z!!!!2bi`$Jk`!'h`$aJ1X!"Z!!m)$V!!MK!!!"m8(U!!VK!!!'mMi +!21S!"Z%!m!MU!!EK!2%)k3!'i3$a&1N!#1)!!!2aiqN!"Z%!mB$T!!EK!2'!k3! ++iJ!!!I*"!%$T!!EL!2%qk!!'iJ$a#1J!"Z)!m3MS!!VM!!!%mK3!%1J!#Z-!!#2 +bi`$Jk!!'iJ$aJ1J!"Z-!m)$S!!VN!!!"mN%!31F!#Z3!!!lb2J!mj`!'j!$a#1B +!"Z3!m3MQ!!EN!2%8jJ!)j3!!!r(MjJ!'j!$aJ1B!"Z3!mB$Q!!MP!2&"!%$Q!!E +P!2%qj3!'j3$a#18!"ZB!m!MP!!MQ!2%8!"$P!!VQ!!"MmZ-!i18!"ZB!m)$P!!E +Q!2#!j3!+j`!!!I*"!%$N!!VR!!!HmMi!213!"ZF!m3MM!!ER!2%)i`!'j`$a&1- +!#ZJ!!!2bi`$Li`!'j`$aJ1-!"ZF!mB$M!!MS!2&"!%$M!!ES!2%qiJ!'k!$a#1) +!"ZN!m!ML!!MT!2%8!"$L!!MT!2(M!1$L!!ET!2#!iJ!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3! +#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!#Z3!!!+!!J`$rAPX!!!%!!!!"(!! +!!"`!!!"'!3!+@BqU!bPI!!C)H!-",b`!"NkY!F)[,!!'F!-[!#!-+R"KD@jd-5j +hF(F`[`)!!!"#9h"d3PGVF`#3#%*AF(4#9fYc!*!Bcl6@8J#3"J&LA`!@@Bm`,J! +55-![!+Jr)'`!"L"3)9m!'LKZrra1ANje6PB!!#m-+'i!##"X!!BJ8$&X!"B!)(! +3X'`!&Qi1)'`!"L"3-A`!%!!HB!SJE!!')&"#D!!H-#`!&P0!CaK63'F898"R%&P +!C`a43'FL"%!!%'FfB%`JE!!')&!aI!!"!*!%$!Y#C@&RE'9AEh*VF`!!!!J!6J! +#!G`#GJ!!!3!!!!%F!!!!(!!!!%B!,@Lm&i)!!!!F!%B!!9088L!!!!!5Ge"[F`! +!!"krp2rr!*!&,9qS!qRrr`!!!"!!N!5,K!: diff --git a/writerperfect/qa/unit/data/draw/libpagemaker/fail/.gitignore b/writerperfect/qa/unit/data/draw/libpagemaker/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libpagemaker/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libpagemaker/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libpagemaker/pass/shapes.pmd b/writerperfect/qa/unit/data/draw/libpagemaker/pass/shapes.pmd new file mode 100644 index 000000000..40e7df8b2 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libpagemaker/pass/shapes.pmd differ diff --git a/writerperfect/qa/unit/data/draw/libstaroffice/fail/.gitignore b/writerperfect/qa/unit/data/draw/libstaroffice/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libstaroffice/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libstaroffice/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libstaroffice/pass/Draw_3.1.sda b/writerperfect/qa/unit/data/draw/libstaroffice/pass/Draw_3.1.sda new file mode 100644 index 000000000..bd03aa7c1 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libstaroffice/pass/Draw_3.1.sda differ diff --git a/writerperfect/qa/unit/data/draw/libvisio/fail/.gitignore b/writerperfect/qa/unit/data/draw/libvisio/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libvisio/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libvisio/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libvisio/pass/EDB-22679-1.vsd b/writerperfect/qa/unit/data/draw/libvisio/pass/EDB-22679-1.vsd new file mode 100644 index 000000000..a0f5242a4 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libvisio/pass/EDB-22679-1.vsd differ diff --git a/writerperfect/qa/unit/data/draw/libvisio/pass/fdo57117-1.vsd b/writerperfect/qa/unit/data/draw/libvisio/pass/fdo57117-1.vsd new file mode 100644 index 000000000..3d7387766 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libvisio/pass/fdo57117-1.vsd differ diff --git a/writerperfect/qa/unit/data/draw/libwpg/fail/.gitignore b/writerperfect/qa/unit/data/draw/libwpg/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libwpg/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libwpg/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libwpg/pass/WPG1.wpg b/writerperfect/qa/unit/data/draw/libwpg/pass/WPG1.wpg new file mode 100644 index 000000000..273089649 Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libwpg/pass/WPG1.wpg differ diff --git a/writerperfect/qa/unit/data/draw/libzmf/fail/.gitignore b/writerperfect/qa/unit/data/draw/libzmf/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libzmf/indeterminate/.gitignore b/writerperfect/qa/unit/data/draw/libzmf/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/draw/libzmf/pass/ZonerDraw_5.zmf b/writerperfect/qa/unit/data/draw/libzmf/pass/ZonerDraw_5.zmf new file mode 100644 index 000000000..fa2a96a6c Binary files /dev/null and b/writerperfect/qa/unit/data/draw/libzmf/pass/ZonerDraw_5.zmf differ diff --git a/writerperfect/qa/unit/data/import/SOLVE.FM3 b/writerperfect/qa/unit/data/import/SOLVE.FM3 new file mode 100644 index 000000000..8e4a2ed2d Binary files /dev/null and b/writerperfect/qa/unit/data/import/SOLVE.FM3 differ diff --git a/writerperfect/qa/unit/data/import/SOLVE.WK3 b/writerperfect/qa/unit/data/import/SOLVE.WK3 new file mode 100644 index 000000000..7b3d74c1d Binary files /dev/null and b/writerperfect/qa/unit/data/import/SOLVE.WK3 differ diff --git a/writerperfect/qa/unit/data/impress/libetonyek/fail/.gitignore b/writerperfect/qa/unit/data/impress/libetonyek/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/impress/libetonyek/indeterminate/.gitignore b/writerperfect/qa/unit/data/impress/libetonyek/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_1.key b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_1.key new file mode 100644 index 000000000..f59ccfab0 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_1.key differ diff --git a/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_2.key b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_2.key new file mode 100644 index 000000000..8d7cd4b72 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_2.key differ diff --git a/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_3.key b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_3.key new file mode 100644 index 000000000..5d715e68c Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_3.key differ diff --git a/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_4.key b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_4.key new file mode 100644 index 000000000..bf3c9f0c5 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_4.key differ diff --git a/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_5.key b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_5.key new file mode 100644 index 000000000..fe2f9ad21 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_5.key differ diff --git a/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_6.key b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_6.key new file mode 100644 index 000000000..b0401b398 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libetonyek/pass/Keynote_6.key differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/fail/.gitignore b/writerperfect/qa/unit/data/impress/libmwaw/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/impress/libmwaw/indeterminate/.gitignore b/writerperfect/qa/unit/data/impress/libmwaw/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/ClarisWorks_6.0.cwk b/writerperfect/qa/unit/data/impress/libmwaw/pass/ClarisWorks_6.0.cwk new file mode 100644 index 000000000..2e60a81d3 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/ClarisWorks_6.0.cwk differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_2.ppt b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_2.ppt new file mode 100644 index 000000000..4856f15f5 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_2.ppt differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_3.ppt b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_3.ppt new file mode 100644 index 000000000..f2185ab92 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_3.ppt differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_4.ppt b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_4.ppt new file mode 100644 index 000000000..bd2a464f9 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_4.ppt differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_7.ppt b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_7.ppt new file mode 100644 index 000000000..0556e51c6 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_7.ppt differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_1 b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_1 new file mode 100644 index 000000000..72be750b8 --- /dev/null +++ b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_1 @@ -0,0 +1,48 @@ +(This file must be converted with BinHex 4.0) +:#R"[Gf9bF'pTER3!8da%8e"36P3"!!!!#DB!N!6iJ!ZYhZd!!!!#!!!!'!!D!!3 +!!!QQ!!S!'3!!!+J!!!$S!!!!rJ!!!C!!!!!!(!!!!Si!N!B#UJ!!!$S!!!+U!!! +"L!!!!Z3!!!"5!!!%E!!!!"`!!!5q!*!'"0S!!!!k!!!%fJ!!!"`!!!88!!!!'!! +!"6!!!!!i!!!&5!!!!"3!!!@!!!!!1J!!"C3!!!!a!!!&cJ!!!$%!!!Ar!!!!'!! +!"M!!!!&+!!!'5!!!!"J!!!H5!!!!&J!!"kS!!!"`!!!(`!!!!#!!!!J`!!!!1J! +!#&!!!!"i!!!)LJ!!!+!!!!N#rf6reIq#!#S$!*!%!3-"!*Mrr`!"!"N!E&E-rk$ +r4J!'!!B#!*!%!3%"!"6rr`!"!!8!E&GS!#ArC!!mrjF$!*!%!3%"!!$rr`!!!") +!E&GF!%MrA3"Yrj3$!!%!!!%%"3!!rrm!!!!5!'aAB!"irhB!VIrF!J#3"!%"!3! +!rrm!!`!#!'a@D!!Brli!J!%8!J!"!3!"!3-!!2rr!!)!!J"X8f3"!!!(FfaTC'8 +J-J%!"J!!'!%!&3!!!!4KBATK!!B!!")"!"8!!!!&BQ&kHQ80!!B!!")"!"8!!!! +%C'9PC!!'!!!5!3!9!!!!#`N*B3PKB@%*Bf&K$3!'!!!5!3!9!*!&"J!!%J%!&3! +!!!4KN!3!"J!!%J%!&3!!!!0MBf2J!!B!!")"!"8$!!!(E'PREQ8J-3!!"J!!%J% +!&3!!!!GXD@GZC5!b!3!'!!!5!3!9!3!!*f*TCb"kEfjP)''3'5"KN!6U!!B!!") +"!"8#!3!-#C!%B@%*#@'3"!!'!!!5!3!9rjMqZ3"Trp!"!*!&!3%!r`#3#[q3"!# +3"!%"!*!,!3#3"`B"!!!"9K3!'J!!!!-!N!8#!!'3"$3!m!%drf6re2q#!#`$!*! +%!3%"!*Mrr`!"!"N!E&EBrjVrL2qJ!&S!N!B"!3!!rrm!!3#3"[qqrdErk2pm!3% +"!!!!!J&"!2rr!!)!N!Erl[qX!",reJ'3"!!!#J-3!2rr!!%!N!FHrd!!92q#!3! +"!!%!"`%!!2rr!*!*0[qf!'8!BJ-!!3!!!3%%!!$rr`!!!#B!E&CJ!)6r8J#HrpB +#!*!%!3%"!!$rr`!!!!%!E&C)rm6rd2qQ!!`!N!B"!3%!rrm!!3#3"[r@rqJ!!!! +f!*!'!3%#!2rr!!%!N!F'!"J!*2rd!*!'!3%!'2rr!!%!N!Ff!%J!(J!H!*!'!3% +!!2rr!!%!N!EqL2lM!9N"*!%!N!8"!3$r!!)!N!MqP2l[!@8"-!%!N!8"!3$r!!) +!N!MrcIr+!"-!23%!N!8"!3"X!!-!N!J"!!!(8faTC'8J-3`!"J!!'!%!&3!!!"T +cE@&XE#"dCAKd$@)VG@jNCA*XD@jP+fpeG!!-!!!5!3!9!!X5$3!9!!!!"A4PH(3 +b!!!'!!!5!3!9rjMqZ3"Trp!"!*!&!3%!r`#3$33!N!8"!*!&E&0m!!!!"J#3"38 +!$J%!'2"1AL"I!!!!#!#3"3F!!3%"!!K3393Jrf6rYIq#!%S$!*!%!3%"!*Mrr`! +"!"N!E&G`!3!!$%eKFh4PFL"cE'PNC3!'!!!B!3!9rjMqZ3"Trp!"!*!&!3%!r`# +3#[qD!!!!'!#k!3!"!!!!!3%!&[rr!!%!%J"X9QJ"!!!)G'KP)'j[G'8!"J!!%J% +!&3!!!!N!N!8"!*!,#`#3"3S!!3%!,blr[UKG!!!!$3#3"3`!!J%!U&d3(m!I!$% +!N!3#d!*!%3'J!))"!!S!N!3#d!*!#J#3#$3!5!!Y!)J!QMLJ!)2r!$%!"`!(!%` +!H4%"S!##!3!+!!F!"`"-!(N+!*!)0!!+!!S!5J"h1+!!Jrm!"rq3"!#3"`)!!!! +2!!%!!!!3)!#3'K)!!!S2!6J!0J!N#Jm"!!"D!%J+$`&(!(i!E!S2!@i!SJ#3!!S +2!@F!!3!$!&%!G`#A!*!2"J!5!!!+#`%i!$B!*!S,!3!!@J")#JX"4`"q!'`+#`& +Z!+)!N!!+#`&R!!%!#J!)!"-!(!!N!$!!3!"3!&i!E!"f!$J!"!!-$"!"1!!f!#3 +-%!%!!&S!5!`3!8F!IJ"X$"!"EJ#L!*!!$"!"C`!"!!S!"`!0!"8!(3!M!#S!,J! +k!%8!8!29!")!!!S2!6J!0J!N#Jm"!!"D!%J+$`&(!(i!E!S2!@i!SJ#3!!S2!@F +!!!!+!!J!%`!F!#3!-!"!!&!!AJ"X!(B!1!!9!!`-%!%i!$B!*!`3!3!!@J")$"! +"4`"q!'`-%!&Z!+)!N!!-%!&R!"8!%J(!!"8!%J(!!"8!'!&""q%!I4NJ!!%!!!! +"!!%!EJ!!!3#3"#i!N!6qiIk*!5!"H!%!N!8"!3!-!*!+relr#J#Z!3J"!!%!!!! +"!8%!rrm!!3#3"[pHraB!VJ#k!*!'!3%!!2rr!!%!N!Er22mkre2rp3-!N!3"!3% +!!2rr!!!!%J"X9a!!!!!8G'9iG#"TEL"SB@jNEh9d)("KCf8!"J!!%J%!&5"Z!!j +$l[ri!*!+rrJL6#,B)YJ`,J!-8d$T30"81)!!!!!@!*!&&3!%!3"63%M!JI`!$`! +!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-!"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!! +"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"rrrr,IrrrX! +@aJ!!!#N!"3(F!R`!!J!#!*!&E&TB!!!!$J"X@1!!E&Pirbrqk3$5!4MqiIk*!5! +"H!!!!"F!E&D!rr!!"!!"!!8!!!!#!*!&2J"6!&F!3J!'!!N!#J)"!!!!E&CB!'a +9!!%#!!!!%3!!!")!!!!6rj!%!*!(&!)r!Zm"S`)Z!!%!J!!!!"J!N!J,VGlY$PB +!!!: diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_2 b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_2 new file mode 100644 index 000000000..6f646c1a5 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_2 differ diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_3 b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_3 new file mode 100644 index 000000000..95b415b06 --- /dev/null +++ b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_3 @@ -0,0 +1,101 @@ +(This file must be converted with BinHex 4.0) +:"A"bCA-c!&0-4$038&3c!3!!!",*!!!%%fUe#khHl3!!!!-!!!!H!$`!#J!!%XN +!8!!l!*!'J!!!'!!!!Ik!!!"!!!!#&S!!N!8#9S!!N!8#9S!!!,)!!!*@J!!!*J! +!!`L!!!"!!!!$,S!!N!8$ES!!N!8$ES!!!'!!!!0ZJ!!!*J!!!mk!!!!J!!!$p)! +!!#!!!!38J!!!&J!!"$5!!!!B!!!%5S!!!%!!!!4LJ!#3"35LJ!#3"35LJ!!"iJ! +!"++!!!!Q!!!'K)!!!'!!!!DUJ!!!&!!!"`U!!*!&"ak!!!'q!!!((S!!!#B!!!M +FJ!!!)!!!#3+!!!!B!!!*)S!!!#!!!!NkJ!!!&!!!#9U!!*!&#@k!!!#8!!!*ES! +!!#B!!!S#J!!!)!!!#LL!!!!B!!!+5)!!!#!!!!TJJ!!!&!!!#S#!!*!&#T5!!!# +8!!!+P)!!!#B!!!XSJ!!!)!!!#dk!!!!5!!!,ES!!!"!!!!Z!J!!!'J!!#j!!J!! +!'J!!#kU!!!!D!!!,a)!!!$B!!![HJ!!!5!!!$"5!!!"!!!!-A)!!!&i!!!bFJ!! +!'!!!$2U!!!35!!!0%S!!!#)!!"%NJ!!!"J!!%8D!!!!-!!!46)!!!!F!!"&BJ!! +!$!!!%9q!!!!H!!!4Di!!!(J!!"'*J!!!0J!!%J'!!!#1!!!50`!!98i!!J!#rj! +%!!!(!J!-!*!'%!##d2N3pc$li!M3!3!"N!3!!J#3"2rp!!![0`i8%!##`2a`pc! +'N!!)d!%!!C!%!!)!N!6rr3!!)Pm#[!!!!!i!!!"J!*!&$J!!63#!!!!!q5hhD[[ +$#*B!!!!N!!%!!`!!,cF!rk8!N!4N!*!(!3"D!*!&!3!"!*!&$!#3"4!!N!8B!*! +&(!#3"34-!)!!!!$mMIGU"R-)PJ!!!"J!!3!"!*!%3!'P!*!%C!#3#9S!(J!!!!% +!!3#3"3`!N!83!*!&'!#3"4`!N!F%!!!!!3!#!!)!!3!!!!(r!*!1!J!!!!-3!), +!rh$jd!Q3!!B`!3!"N!3!!J#3"2rp!!"$E`Vd%"!!`2C`qQ$qi!@J!3!"N!3!!J# +3"2rp!!!"!*!+$Rrr!!!!$J!!6!#!!!!!rihk#JPc"IB!!!!-!!!!!3#3"IqP!*! +%C!#3#9S!+!!!!!%!!3#3"3`!N!83!*!&'!#3"4`!N!F*!!!!"J!#!!)!!3!"!!$ +r!*!1"`!!!!J!@($%!*!("3!!!!S!@CH%!*!'!3#3"J%!!!!+!!%!N!N$!*!%J3# +3#!Xm$!#3"``!!3!"!!!"!3"BF'3!!&91!!)!!J#3"JF#!!`!N!B3!),3q4$h-2[ +J#0!"!!'3"!!#!*!%rrd!!#*I$@33!),!r($h-!D3!!M3!3!"N!3!!J#3"2rp!!! +LA`fN!!!!$J!!!*J!N!81!!"0!)!!!!$j,IGUqm-)P[rr!#3!!Irr!!!Ii!$rP3$ +rr`"N!*!(!3"D!*!&!3!"!!!!#e0XD@4P)&4TG'aP!J!-!!!!#`!3!!!!!3!!!!X +!!!!N!!%!!`#3"4J!!!!,!"`!!!!"!!!!#`$rT3#3"'3!N!F"!&S!N!8"!!4-!)! +!!!$mMIGU"R-)P[rr!!i!!Irr!!!Ii%$rPJ$rr`"N!*!&"!!!!&S!(J#3"3%!!!! +l3QpNH5"8CAKd$90PBfpZC#"-CACPE!e8D'PbC#"-CACPE!e'Eh9bG'JJ6'9fC@` +04QPQG'JJ6'9fC@cS!!`!!!!l!"!!!!!$!!!!#J!!!"J!!3!"!*!('3!!!")!!3! +"!*!('!!!!!i!!3!"!*!&'!!!!$X!(!!!!!8!!!!+3!'P!*!%C!#3#9S!(J!!!!% +!!!!03!(3!*!%C!#3"3%!!!"D!"i!N!F-3!()!*!%C!#3"3)!!!"D!"i!N!F03!' +P!*!%C!#3"3-!!!"D!"i!N!F,3!(3!*!%C!#3"33!!!"D!"i!N!F5!!!!$`!#!!) +!!3!!!!(r!*!1%!!!!"%3!+6!#Lrr&JV2!1S"!!'3"!!#T!K[3rrp!!"$E`KF%"! +!d2C`qQ$qi!@J!3!!!3!"!!)!N!6rr3#3"K!!JX$rF2R3#C!!"M!"!!!"!!%!!J# +3"2rp!!"$E`HF)!!!'NB2!!!!$3!K!"`!0`!B!*!*P!#3"C3!"B`!J!!!!!T,rdd ++X`#crrm!#`!!rrm!!#4A!2q9!2rr!'3!N!F"!'3!-J#3"3%!!!!(8'&RC5!M)`! +!$!!!!!F!%!!!!!%!!!!(!!!!$!!!!!%!N!8B!!!!"`!F!!!!!3!!!!F!rk8!N!4 +N!*!(!3"D!*!)6!#!!!!!rihk#JPc"IErr`!-!!$rr`#3"Iq9!2rr!'3!N!8%!!! +!@J!S!!!!!3!"!!!!1d*[C(NJ9'9iG!e6C@0[EQ3J6'9fC@`09'KTFQ3J6'9fC@` +04QpeFR4S)%aPGQ9X$8CTCR4S)%aPGQ9X!!!-!!!!1`!3!!!!!3!!!$X!!!!-!!! +!!3#3"4J!!!!l!"`!!!!&!!!!#J$rT3#3"'3!N!PD!#J!!!!"!!!!$3$rT3#3"'3 +!N!8"!!!!@J!S!!!!!3!!!!`!rk8!N!4N!*!&!J!!!&S!+!!!!!%!!!!0!2qP!*! +%C!#3"3-!!!"D!#J!!!!"!!!!#`$rT3#3"'3!N!8%!!!!@J!S!!!!!3!!!"F!!!! +8!!-!!`!"!!%!!X-!N!i9!!!!&J"BEiJ!!!!1!!!!%`!!!"J!@9p-!&Q@U!!!!!% +!N!C96J!#!!)!N!B(!J!-!*!'%!#N`!S[raB+c`$U!3!"N!3!!U3%TcErr3!!0UF +%R#!!!"T'$`!!!!d!)3!F!$F!'!#3#R*N!!!!P!!&M!#!!!!!#N[r63Uc!,2rr`! +-!!$rr`!!'8X!rj8!rrm!C!#3"`%!@J#3"`%!!!!(8'&RC5!M)`!!$!!!!!F!%!! +!!!%!!!!(!!!!$!!!!!%!N!8B!!!!"`!F!!!!!3!!!!F!rk8!N!4N!*!(!3"D!*! +*(J!!!"X!!3!"!!(rN!8!N!iF!!!!(3"BFh3!!!!D!*!((`#3#`%!N!C96J!#!!) +!N!B(!J!-!*!'%!#N`!S[raB+c`$U!3!"N!3!!X`%TcErr3!!*SF$I#!!!"T'$`! +!!!d!)3!F!$F!'!#3#K!"!!!!P!!&M!#!!!!!#N[r63Uc!,2rr`!-!!$rr`!!b)B +!rj8!rrm!C!#3"`%!@J#3"`%!!!!(8'&RC5!M)`!!$!!!!!F!%!!!!!%!!!!(!!! +!$!!!!!%!N!8B!!!!"`!F!!!!!3!!!!F!rk8!N!4N!*!(!3"D!*!**3!!!#)!!3! +"!!(rN!8!N!iM!!!!*!"BEX`!!!!K!*!(*J#3#LSp!*!%J!%!F82D!!"rr`!!!!3 +!@0ld!!!!+!"aEeB!@@&-!&KZh!#3"!%J!5!#3!*!!f!$B!5!")!!!`*!!!!!Y!! +!!E!")!,3!N!$c!0J"1`%J!!$!N!!N!B"%J%5!L-#)`-e!c8%4J4'!!-#)`!!J!% +!F8`%!!Crr`!!!!3!@9pB!!F!!!!U!*!6!`!!!#X!!`!!!#`!!!QJJ!!!"`!U!#S +!N!3#@!#3"CJ!N$%)!!S!!!!Zm(i!!2"m!!$`I`!!q2m!!2rm!!$rrJ!!rrd!!2r +m!*!*!3!"!!%!!3!"!!%!!3!"!!$rr3#3"f3!C!"N!3%"!!iF0a8!!!QMJ!!!"`" +Brj!'!&N!N!F%N@L4D*&S!&N!N!G%B8H2@rhb!$-!!+i8!!!!$rcX!3BSpJ!&cYM +1f-lBJ!%!F8jS!!&rr`!!!!3!@9p-!!B!!!!`!&K`*!"BC4`!@'rX!!"0!)!I!!! +!*!!"!!-!N!FN!!%!!`#3"b3!!3!$!*!(*!!"!!-!N!FN!!%!!`#3"IqP!*!%C!# +3"`%!@J#3"3%!N!ArT3#3"'3!N!8"!!%!@J#3"3%!N!ArT3#3"'3!N!8#!!%!@J# +3"3%!N!ArT3#3"'3!N!8$!!%!@J#3"3%!N!ArT3#3"'3!N!8%!!%!@J#3"3%!N!8 +%6!#!(`!!!"J!!3!"!*!(%J!"!!%!N!F5!!%!!3#3"`i!!3!"!*!($J!"!!%!N!4 +!!D8!N!4N!*!*@J!H!!!!!3#3"%!"d!#3"'3!N!8"!!!!@J!H!*!)3!()!*!%C!# +3"3)!!!"D!"i!N!K!!D8!N!4N!*!&!`!!!&S!(J#3#%!"d!#3"'3!N!8%!!!!@J! +H!*!+6!#!(`!!!!`!!!!"!*!($!!!!!%!N!F-!!!!!3#3"``!!!!"!*!($!!!!!% +!N!ArT3#3"'3!N!PD!#J!!!!"!*!&rk8!N!4N!*!&!3!!!&S!+!!!!!%!N!ArT3# +3"'3!N!8#!!!!@J!S!!!!!3#3"IqP!*!%C!#3"3-!!!"D!#J!!!!"!*!&rk8!N!4 +N!*!&"!!!!&S!+!!!!!%!N!6rrd`!J"m!!3!B!!!!!3#3"3%!'!!!!!%!N!8"!"J +!!!!"!*!&!3!B!!!!!3#3"3%!'!!!!!%!N!48!D8!N!4N!*!*C!!8!*!)9!'P!*! +%C!#3"3%!!!"N!"3!N!K8!D8!N!4N!*!&!J!!!'3!&!#3#&3"T3#3"'3!N!8$!!! +!C!!8!*!)9!'P!*!%C!#3"33!!!"N!"3!N!V-!)!I!!!!%J!"!!%!N!F5!!%!!3# +3"a)!!3!"!*!(%J!"!!%!N!F5!!%!!3#3"IqP!*!%C!#3#@3!N![rT3#3"'3!N!P +N!*!,rk8!N!4N!*!*C!#3#rqP!*!%C!#3#@3!N![rT3#3"'3!N!PN!*!,!3!"!*! +(!3!!!3!#!#!!!$!!-!#3")!!N!8&3A*TB@`!!!!d!*!%rrm!!!C(C@jPGQ%!!!! +f!*!%rrm!1)!"!(&,f!!#Irm!!!!%!&PIE!!i!!!!03!&!!!!0`!$!!!!5!")!*! +%!YS#+2rKrq)#q3*'!dF&+!2m!!)!!!")!%J!N!3#fJ)S!!%!!!"N!!!!!3!"!3% +!!!!"*`m!!3!"!*!0!J!C!C!!!*!&3!#3#3%!N"%6!*!d!8J"Z!hJ%MMhN!$d`!K +`#d$d`2H3!!Y!#(!!N!Jj9!!!!!d!!!!R!!!!'3!!!#!!!!!kqC!!piJ!!Irr!!% +!!J!#!!-!N!FT!!!!,3!!!$%!!!![!!!!-`!!!$)!!!!i!*!%&S!3i"$J&S!!!3# +3"6RrN!3!!#F3!!!G62rq!!!!F3!$#khHlA@*!!!"!!!!!md!!!,0!!!!4L"(4#" +"8&"-!3#3&`9`FQ9c-`)!!!"66%3c8&"8-`%!rj!%!*!%#j`!N!466%3c8&"8-`% +!rj!%!*!5e#plA`!!%XN!!!36!*!-!TiP!8j238e"8&"-!3#3(3&1*3&6594P8dP +86!8!N"d"db8"BA4MEdGkDA$r!*!A!K)#%J#3"9X!H!!4![m-!2q3"!#3#AJ!!!" +E!*!(!3!+!*!&@`"i!*L!22r6rm3!,J!m!*!*5!!!!%J!N!8%!!%!"!#3"9KbZ!# +3"JDH!!!!$`!!rj!'!!%!N!6rr`!#!!#YD`!!!!-!!2rr!!!!"!!!rj!%!!9M')a +Mrrm!"T5PP+@8T3!(cR21Fmjc!!Mrr`#3"3Rrr`!!+8S!#[rr!!$rr`!,rj!%!!! +!$)3KK#'%)3!0cR21Fmjc!!jcR(1FFj`!$`#3"[r6rm3!,J!m!*!&@`"i!!!#a3! +#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3! +#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3! +#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3! +#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3! +#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3! +#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!#a3!!!2m!!!#cXP4SDA-JC'pMG@e +PER3JBfpeE'3JEQpd)'*P)'p`C@jPC#`JBQ9MBA9cC5"dD'8JBA"`E'PMBA4TEfi +JdP"[Gf9b8'pTER3J-bi`db"MEh9XC#"ZEh3JBQ8JCQpeEQ3Z)#"8D'Pc)'4[Bh9 +YC@jd)'0KEL"KE(0[)'*P)'p`C@jPC#"QFQpY)(GTG'KTEL"dD'8JdP"[Gf9b8'p +TER3J9QPPGf9bdb"KF("XD@0KG'P[ELi!!!%!!!!$c3!!!Xd!!!"'!&**`"6`!!! +!(!"'!!&35808!!!!%P088L!!!!!H4Errr`#3"9KXE,rcrrm!!!)@!&KbQ*qr: diff --git a/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_4.ppt b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_4.ppt new file mode 100644 index 000000000..7714520d8 Binary files /dev/null and b/writerperfect/qa/unit/data/impress/libmwaw/pass/PowerPoint_Mac_4.ppt differ diff --git a/writerperfect/qa/unit/data/stream/fdo40686-1.doc b/writerperfect/qa/unit/data/stream/fdo40686-1.doc new file mode 100644 index 000000000..bb0fd5927 Binary files /dev/null and b/writerperfect/qa/unit/data/stream/fdo40686-1.doc differ diff --git a/writerperfect/qa/unit/data/stream/test.dir/META-INF/manifest.xml b/writerperfect/qa/unit/data/stream/test.dir/META-INF/manifest.xml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/META-INF/manifest.xml @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.dir/Thumbnails/thumbnail.png b/writerperfect/qa/unit/data/stream/test.dir/Thumbnails/thumbnail.png new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/Thumbnails/thumbnail.png @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.dir/content.xml b/writerperfect/qa/unit/data/stream/test.dir/content.xml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/content.xml @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.dir/manifest.rdf b/writerperfect/qa/unit/data/stream/test.dir/manifest.rdf new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/manifest.rdf @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.dir/meta.xml b/writerperfect/qa/unit/data/stream/test.dir/meta.xml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/meta.xml @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.dir/mimetype b/writerperfect/qa/unit/data/stream/test.dir/mimetype new file mode 100644 index 000000000..2e95b81c9 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/mimetype @@ -0,0 +1 @@ +application/vnd.oasis.opendocument.text \ No newline at end of file diff --git a/writerperfect/qa/unit/data/stream/test.dir/settings.xml b/writerperfect/qa/unit/data/stream/test.dir/settings.xml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/settings.xml @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.dir/styles.xml b/writerperfect/qa/unit/data/stream/test.dir/styles.xml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/writerperfect/qa/unit/data/stream/test.dir/styles.xml @@ -0,0 +1 @@ + diff --git a/writerperfect/qa/unit/data/stream/test.odt b/writerperfect/qa/unit/data/stream/test.odt new file mode 100644 index 000000000..5688df4f9 Binary files /dev/null and b/writerperfect/qa/unit/data/stream/test.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/2pages.fodt b/writerperfect/qa/unit/data/writer/epubexport/2pages.fodt new file mode 100644 index 000000000..ee797e8ac --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/2pages.fodt @@ -0,0 +1,14 @@ + + + + + + + + + + First page + Second page + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/abi11105.abw b/writerperfect/qa/unit/data/writer/epubexport/abi11105.abw new file mode 100644 index 000000000..cbb326940 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/abi11105.abw @@ -0,0 +1,200 @@ + + + + + + + + + + + +application/x-abiword +AbiWord + + + + + + + + + + + + + + +
+ + +

Evan Rinehart

+

P.O. Box 21456

+

Baton Rouge, LA 70894

+

(985) 806 4063

+

evanrinehart@gmail.com

+
+ +

+
+ +

+

+
+ +

Work Experience

+
+ +

+
+ +

RageComm

+

Aug 2007 -

+

+
+ +

Programmer

+

Researching and implementing advanced graphics techniques using shaders; providing general support.

+
+ +

LSU Student Technical Application Resource Training

+

Aug 2006 - May 2007

+

+
+ +

Software Trainer

+

Taught classes in MATLAB, Mathematica, web design, and Linux system administration.

+
+ +

LSU Department of Electrical and Computer Engineering

+

Jan 2006 - May 2007

+

+
+ +

Engineering Tutor

+

Tutored engineering students in circuits, digital logic, electronics, and software engineering.

+
+ +

LSU Department of Mathematics

+

Aug 2005 - May 2006

+

+
+ +

Software Trainer / Math Tutor

+

Assisted students enrolled in computer-based college algebra program.

+
+ +

LSU School of Veterinary Medicine

+

Jun 2004 - Aug 2005

+

+
+ +

Entry-Level Network Technician

+

Installed and maintained network hardware throughout hospital and research facility.

+
+
+

+ + +

Education

+
+ +

Bachelor of Science in Electrical Engineering

+

Louisiana State University, 2007

+
+ +

Concentration in Computer Engineering

+

Minor in Physics

+

Minor in Computer Science

+

Major GPA: 3.24

+

+
+ +

Bachelor of Science in Mathematics

+

Louisiana State University, Expected 2008

+
+ +

Concentration in Pure Math

+

Major GPA: 3.44

+
+
+

+ + +

Former Supervisors

+
+ +

Mark Rabalais

+

Instructor

+

LSU Department of Electrical and Computer Engineering

+
+ +

+

Phone: (225) 578 5200

+

Email: mrabal@lsu.edu

+
+ +

Melissa Brocato

+

Director

+

LSU Student Technical Application Resource Training

+
+ +

+

Phone: (225) 578 4526

+

Email: mbrocato@lsu.edu

+
+
+

+ + +

Skills

+
+ +

+
+ +

Languages

+
+ +

C, C++, Java, Perl, Python, Lua, Cg, Others

+
+ +

Server Software

+
+ +

Apache, BIND, CVS / SVN, DHCP, MySQL, Others

+
+ +

Operating Systems

+
+ +

Linux, OpenBSD, OpenSolaris, Windows XP / Server 2003, Others

+
+ +

WWW

+
+ +

HTML, XHTML, CSS, PHP

+
+ +

Network

+
+ +

iptables, packetfilter, IPv6, SMB / CIFS, BSD sockets

+
+ +

Linux

+
+ +

bash, dpkg, rpm, portage, pthreads, kernel configuration, X window system

+
+ +

Engineering

+
+ +

Electronics, Logic Design, Computer Architecture, Communications Technology

+
+
+

+
+
diff --git a/writerperfect/qa/unit/data/writer/epubexport/char-namedstyle.fodt b/writerperfect/qa/unit/data/writer/epubexport/char-namedstyle.fodt new file mode 100644 index 000000000..5a1b3823d --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/char-namedstyle.fodt @@ -0,0 +1,16 @@ + + + + + + + + + + + + + Foobar + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/escape.fodt b/writerperfect/qa/unit/data/writer/epubexport/escape.fodt new file mode 100644 index 000000000..8d23fb36e --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/escape.fodt @@ -0,0 +1,16 @@ + + + + + + + + + + + + + a&b + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/font-embedding.fodt b/writerperfect/qa/unit/data/writer/epubexport/font-embedding.fodt new file mode 100644 index 000000000..ac241503d --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/font-embedding.fodt @@ -0,0 +1,2657 @@ + + + + + 0 + 0 + 48553 + 22888 + true + false + + + view2 + 6653 + 2501 + 0 + 0 + 48551 + 22886 + 0 + 0 + false + 100 + false + false + + + + + false + true + true + true + true + 0 + true + + false + false + false + false + false + true + false + false + false + false + false + false + true + true + false + false + true + false + false + false + false + + false + false + false + true + false + false + + false + false + false + false + true + 314478 + false + false + true + false + true + true + false + true + 0 + false + true + high-resolution + false + false + false + false + true + true + writer-data-source-ooxml + true + false + false + true + false + false + false + + true + false + 314478 + false + 1 + true + false + false + 0 + false + false + Table1 + + false + + + + + + + + + + + + AAEAAAAUAQAABABARFNJRzfRQ3UAAdkYAAAbnEdQT1MkQqBJAAH0tAAAFaRHU1VC2mzdsAAC + ClgAAABYTFRTSErIqbcAAAhgAAABkk9TLzK4ec1/AAAByAAAAGBWRE1YZUZsuAAACfQAAAXg + Y21hcIGuWR0AADPMAAAGjmN2dCAIkwJmAAA8eAAAACBmcGdtBlmcNwAAOlwAAAFzZ2FzcAAX + AAkAAdkIAAAAEGdseWZGr7RbAAA/uAABjnxoZG14gZErxQAAD9QAACP4aGVhZPLtvvoAAAFM + AAAANmhoZWEOQQbZAAABhAAAACRobXR4UCaEqQAAAigAAAY4bG9jYVnq+JQAADyYAAADHm1h + eHADowTPAAABqAAAACBuYW1lYAWWKQABzjQAAAJ2cG9zdJZZNaMAAdCsAAAIW3ByZXBQ0h19 + AAA70AAAAKgAAQAAAAECj0muuKhfDzz1ABkIAAAAAADF3g7UAAAAAMYKY4n+K/1UCa0HvAAA + AAkAAgAAAAAAAAABAAAGZv4AAAAJff4r/c0JrQABAAAAAAAAAAAAAAAAAAABjgABAAABjgDZ + AAQA1wAEAAEAAAAAAAoAAAIAAx0AAgABAAIEIgGQAAUACAWaBTMAAAEfBZoFMwAAA9EAZgIA + AAACAAAAAAAAAAAAoAAAr0AAIEoAAAAAAAAAAG1sc3MAQAAg+wIGZv4AAAAGZgIAIAABk00A + AAADqAThAAAAIAACA5oAAAAAAAADmgAAA5oAAAZoAB0FXABOBmYAOQVOADkCJQCgBD0AcwRe + ACkDlgBLBR0ASAMEAKgDtgBqAyUBDgNO/9EFCgA5AnsA6QUXADkFSgA5BdEAIwW6/8UFiQA5 + BRcAOQUnAF4FIQA5A64BYgOWAJ4EywA5BO4AUQS2ACMEBABOBs0AOQUpACMGdQCkBUoAOQXT + AIcFvgDTBOUA9gXnADkFUABUAlwA9QQl/8kFqgB/BIcApgZSANEFvADWBVYAOQVkAE4GWgA5 + BOEAdwXfAE4Esv/+BaYA2QTVADUHxQA6BJwAOwVoAB0GugAKBOEA2wQfAAgEwwCoA1wABwSy + ACYEWgDGBR8ANQTsAGwEQgA1BWIANQRaADUDJQAXBE4AJQSkAMQCGwCmAkz/KwPpAKQCHwDN + BpwApQTJAM0ErAA1BbgAzAWBACkE1QC/BFQASAMXAAIEewDNA3MAHAXVABwDmAA0A+P/lASJ + ABsERgCBAhIA2QReAEME5QBNBc8ACgMEAKgDJf91As0AbQlvAQIC3QAIAt0ACARaARQJZAA5 + Bd8ATgNOADkJfQA5BroACgJgAEoCAgApAwQAKQMxABcDwwBQBPAAaga2AGoEWgB0BjUADgRU + AEgDeQBMB7IANQSJABsFaAAdA5oAAAMfARMEQgA1BZ4ACgSsAH4FaAAdAhIA1gPTAEIEWgEC + BfYALQONADkExQA5BO4AsAO2AGoF9gAtBFoAmAQfADkFHQBEA4kAJwOeADkEWgE4BR8AzATb + AEwDrgFoBEIAYgIbAKoDWgBCBRIASgZ/AIEGfwCBB8cAOQQEAE4FKQAjBSkAIwUpACMFKQAj + BSkAIwUpACMH7AAjBUoAOQW+ANMFvgDTBb4A0wW+ANMCXP/ZAlwADgJc/+4CXAARBdMAHwW8 + ANYFVgA5BVYAOQVWADkFVgA5BVYAOQO8AEwFVgA5BaYA2QWmANkFpgDZBaYA2QVoAB0FZABO + BXcAxwUfADUFHwA1BR8ANQUfADUFHwA1BR8ANQcxAAwEQgA1BFoANQRaADUEWgA1BFoANQIb + /7kCG//tAhv/yQIb//EErAA1BMkAwgSsADUErAA1BKwANQSsADUErAA1BDMAIwSsADUEewBx + BHsAzQR7AM0EewDNA+P/lAW4ANMD4/+UAhsAxASH/+gCH/+iBFoA+wRaAI0EWgGyBFoBMQRa + AoEEWgEsBSkAbwS8//oEH//4AC/+KwSsADUFb//+BWQAeQTwAGoFfwAbBagANQJM/ysE5QA+ + BO4AUQTLACYEtgAjA3MAYAU/ABcFRAAXBFoBXgUpACMFHwA1BSkAIwUfADUFKQAjBR8ANQVK + ADkEQgA1BUoAOQRCADUFSgA5BEIANQVKADkEQgA1BdMAhwZaADUF0wAfBWIANQW+ANMEWgA1 + Bb4A0wRaADUFvgDTBFoANQW+ANMEWgA1Bb4A0wRaADUF5wA5BE4AJQXnADkETgAlBecAOQRO + ACUF5wA5BE4AJQVQAFQEpADEBVAAOgSk/7cCXP+qAhv/VgJc/7wCG/+VAlz/kgIb/3ECXP/w + Ahv/tgJcAMMGgQD1BGYApgQl/8kCTP8rBaoAfwPpAKQD6QCkBIcApgIf/+8EhwCmAh8AfQSH + AKYDBgDNBIcApgNQAM0FvADWBMkAzQW8ANYEyQDNBbwA1gTJAM0EyQB2BbwA1gTJAM0FVgA5 + BKwANQVWADkErAA1BVYAOQSsADUE4QB3BNUAvwThAHcE1QC/BOEAdwTVAL8F3wBOBFQASAXf + AE4EVABIBd8ATgRUAEgEsv/+AxcAAgSy//4DagACBLL//gMXAAIFpgDOBHsAhAWmANkEewDD + BaYA2QR7AJ8FpgDZBHsAzQWmANkEewDNBaYA2QR7AM0HxQA6BdUAHAVoAB0D4/+UBroACgSJ + ABsGugAKBIkAGwLLABcH7AAjBzEADAVWADkErAA1Bd8ATgRUAEgEsv/+AxcAAgO2AGoGdQCk + BOwAbAXTAIcHxQA6B8UAOgViADUFaAAdBOUA9gMlABcGUgDRBpwApQVkAE4F1QAcBbgAzAXV + ABwF3wBOA+P/lAfFADoF1QAcBFQASASy//4DFwACAs0AbQMfAO4AAAGOAQEBAQFEOwE7AUwB + ATsBAQEBAQFMAUwBATsBAQEBAQErTAFMAUwBAUw7AQEBATcBAQEBTAEBOwEBAQEBAQEvAQEB + NwEBTAEBRAEBAQEBRAEBAQEmKwEBAQEBAQEBATcBATsBAUwBAQE7AQEBAQFEATMBAQEBHAEB + KwEBAQEBAQEBATsBFAEBRAEUAQEBO0wBTEwBAQEBAQEBAS8BAQEBAS8BAQEBAQEBAQEBTAEB + AQEBAQEBAQEBAQEBRAEBAQEBATdEAQEBAQEBAQEBAQEBAQEBAQEBAQEBASYBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBRAEBAQEBAQEBNwEBAQEBAQEBAQEBTAEBAQEBAQFMAQEBAQEBAQEB + AQEBOyYBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBTAEBAQEBAQEBAQEBAQEBAQEB + RA0BAQEBAQEBAQEBAQEBAQEBOzsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEAAAAAAAEAAQEBAQEADAD4CP8ACAAH//4ACQAI//0ACgAI//0ACwAJ//0ADAAK + //0ADQAL//wADgAM//wADwAM//wAEAAN//wAEQAO//sAEgAP//sAEwAQ//sAFAAQ//sAFQAR + //oAFgAS//oAFwAT//oAGAAU//oAGQAU//kAGgAV//kAGwAW//kAHAAX//kAHQAY//gAHgAY + //gAHwAZ//gAIAAa//gAIQAb//cAIgAc//cAIwAc//cAJAAd//cAJQAe//YAJgAf//YAJwAg + //YAKAAg//YAKQAh//UAKgAi//UAKwAj//UALAAk//UALQAk//QALgAl//QALwAm//QAMAAn + //QAMQAo//MAMgAo//MAMwAp//MANAAq//MANQAr//IANgAs//IANwAs//IAOAAt//IAOQAu + //EAOgAv//EAOwAw//EAPAAw//EAPQAx//AAPgAy//AAPwAz//AAQAA0//AAQQA0/+8AQgA1 + /+8AQwA2/+8ARAA3/+8ARQA4/+4ARgA4/+4ARwA5/+4ASAA6/+4ASQA7/+0ASgA8/+0ASwA8 + /+0ATAA9/+0ATQA+/+wATgA//+wATwBA/+wAUABA/+wAUQBB/+sAUgBC/+sAUwBD/+sAVABE + /+sAVQBE/+oAVgBF/+oAVwBG/+oAWABH/+oAWQBI/+kAWgBI/+kAWwBJ/+kAXABK/+kAXQBL + /+gAXgBM/+gAXwBM/+gAYABN/+gAYQBO/+cAYgBP/+cAYwBQ/+cAZABQ/+cAZQBR/+YAZgBS + /+YAZwBT/+YAaABU/+YAaQBU/+UAagBV/+UAawBW/+UAbABX/+UAbQBY/+QAbgBY/+QAbwBZ + /+QAcABa/+QAcQBb/+MAcgBc/+MAcwBc/+MAdABd/+MAdQBe/+IAdgBf/+IAdwBg/+IAeABg + /+IAeQBh/+EAegBi/+EAewBj/+EAfABk/+EAfQBk/+AAfgBl/+AAfwBm/+AAgABn/+AAgQBo + /98AggBo/98AgwBp/98AhABq/98AhQBr/94AhgBs/94AhwBs/94AiABt/94AiQBu/90AigBv + /90AiwBw/90AjABw/90AjQBx/9wAjgBy/9wAjwBz/9wAkAB0/9wAkQB0/9sAkgB1/9sAkwB2 + /9sAlAB3/9sAlQB4/9oAlgB4/9oAlwB5/9oAmAB6/9oAmQB7/9kAmgB8/9kAmwB8/9kAnAB9 + /9kAnQB+/9gAngB//9gAnwCA/9gAoACA/9gAoQCB/9cAogCC/9cAowCD/9cApACE/9cApQCE + /9YApgCF/9YApwCG/9YAqACH/9YAqQCI/9UAqgCI/9UAqwCJ/9UArACK/9UArQCL/9QArgCM + /9QArwCM/9QAsACN/9QAsQCO/9MAsgCP/9MAswCQ/9MAtACQ/9MAtQCR/9IAtgCS/9IAtwCT + /9IAuACU/9IAuQCU/9EAugCV/9EAuwCW/9EAvACX/9EAvQCY/9AAvgCY/9AAvwCZ/9AAwACa + /9AAwQCb/88AwgCc/88AwwCc/88AxACd/88AxQCe/84AxgCf/84AxwCg/84AyACg/84AyQCh + /80AygCi/80AywCj/80AzACk/80AzQCk/8wAzgCl/8wAzwCm/8wA0ACn/8wA0QCo/8sA0gCo + /8sA0wCp/8sA1ACq/8sA1QCr/8oA1gCs/8oA1wCs/8oA2ACt/8oA2QCu/8kA2gCv/8kA2wCw + /8kA3ACw/8kA3QCx/8gA3gCy/8gA3wCz/8gA4AC0/8gA4QC0/8cA4gC1/8cA4wC2/8cA5AC3 + /8cA5QC4/8YA5gC4/8YA5wC5/8YA6AC6/8YA6QC7/8UA6gC8/8UA6wC8/8UA7AC9/8UA7QC+ + /8QA7gC//8QA7wDA/8QA8ADA/8QA8QDB/8MA8gDC/8MA8wDD/8MA9ADE/8MA9QDE/8IA9gDF + /8IA9wDG/8IA+ADH/8IA+QDI/8EA+gDI/8EA+wDJ/8EA/ADK/8EA/QDL/8AA/gDM/8AA/wDM + /8AAAAAXAAABkAkLBAAEBAcHCAYDBQYEBgQEBAQGAwYHBwYGBgcGBAQFBgUFCQYIBggGBgcG + AwUGBQcGBgYHBgcFBwUJBQYIBQUGBAUFBgYFBgUEBQUCAwQCCAUFBgYHBgMFBAcEBAUFAgUG + BwQEAwoDAwULBwQLCAMDAwQEBggFBwUECgUGBAQFBgUGAgUFCAQFBgQIBQUGBQUFBgYEBQIE + BgcHCQUGBgYGBgYJBgYGBgYDAwMDCAYGBgYGBgQGBgYGBgYGBwYGBgYGBgkFBQUFBQICAgIF + BQUFBQUFBQUFBQUFBAgEAgUCBQUFBQUFBgUFAAUGBgYGBgMGBgUFBQYGBQYGBgYGBgYFBgUG + BQYFBwcHBgYFBgUGBQYGBgUHBQcFBwUHBQYFBgYDAgMCAwIDAgMHBQUDBgQEBQIFAgUDBQQG + BQYFBgUFBwUGBQYFBgUFBQUFBQUHBQcFCAUFAwUEBQMGBQYFBgUGBQYFBwUJBwYECAUIBQMJ + CAYFBwUFAwQHBgcJCQYGBgQHBwYHBgcHBAkHBQUDAwQKDQUABQUICAkHAwUGBAYEBQQEBgMG + BwcIBwYIBgUEBgYGBgoGCQcIBwYHBwMFBwYIBwcHCAcHBggGCgYHCAYFBgQGBQYGBQcFBAYG + AwMFAwkGBgcHBwYEBgQHBQUGBQMFBgcEBAQLBAQFDQcEDAgDAwQFBQYIBQgFBAsGBwUEBQcG + BwMGBQkEBgcFCQUFBgUFBQcGBQUDBAYICAoGBgYGBgYGCgcHBwcHAwMDAwgHBwcHBwcFBwcH + BwcHBwgGBgYGBgYKBgUFBQUDAwMDBgYGBgYGBgUGBgYGBgUIBQMGAwUFBQUFBQYGBQAGBwcG + BwcDBgYGBgUHBwUGBgYGBgYHBQcFBwUHBQcIBwcHBQcFBwUHBwcFBwUHBQcFBwUHBgcGAwMD + AwMDAwMDCAYFAwcFBQYDBgMGBAYEBwYHBgcGBgcGBwYHBgcGBgYGBgYGBwUHBQgFBgQGBAYE + BwYHBgcGBwYHBggGCgcHBQgGCAYDCgkHBgcFBgQFCAYHCgoHBwYECAgHBwcHBwUKBwUGBAQE + Cw4FAAUFCQgKBwMGBgUHBAUEBQcDBwgICAgHCAcFBQcHBgYKBwoHCQgHCAcDBggGCAgHBwkH + CAYIBwsGBwkHBgYFBgYHBwYIBgQGBgMDBQMJBwYICAgHBAYFCAUFBgYDBgcIBAQEDAQEBg4I + BQ0JAwQEBQUHCQYJBgUMBgcFBAYIBgcDBgYJBQcHBQkGBgcFBgYHBwUGAwUHCQkLBgcHBwcH + CAsHCAgICAMDAwMJCAcHBwcHBQcICAgIBwcIBwcHBwcHCwYGBgYGAwMDAwYHBgYGBgYGBgYG + BgYFCQUDBgMGBgYGBgYHBwYABgcHBwgIAwcHBwYFBwcGBwcHBwcHBwYHBgcGBwYICQgICAYI + BggGCAcIBggGCAYIBggGBwYHBwMDAwMDAwMDAwkGBgMIBQUGAwYDBgQGBQgHCAcIBwcIBwcG + BwYHBgcHBwcHBwgGCAYJBgYEBgUGBAgGCAYIBggGCAYIBgsIBwUJBgkGBAsKBwYIBgYEBQkH + CAsLBwcHBAkJBwgICAgFCwgGBgQEBAwPBQAFBQoJCggDBgcFCAUGBQUIBAgICQkICAkIBgUH + BwcHCwgLCAoJBwkJBAYJBwkJCAgKCAkHCQcMBwgKBwYHBQcHBwcGCAcFBgcDAwYDCgcHCQgI + BwUHBQkFBgcGAwYHCQUFBA8EBAcPCQUOCgQEBQYGBwoHCQcFDQcIBQUGCAcIAwYHCgUHCAYK + BwYIBgYHCAcGBgMFCAoKDAcICAgICAgMCAkJCQkEBAQECgkICAgICAYICAgICAgICQgICAgI + CAwGBwcHBwMDAwMHBwcHBwcHBgcHBwcHBgoGAwcDBwcHBwcHCAcGAAcICAcICAMHBwcHBggI + BwgICAgIBwgGCAYIBggGCQoJCAkHCQcJBwkICQcJBgkGCQYJBggHCQcEAwQDBAMEAwQKBwYD + CQYGBwMHAwcFBwUJBwkHCQcHCAcIBwgHCAcHBwcHBwcJBwkHCgYHBQcFBwUIBwgHCAcIBwgH + CQcMCQgGCgcKBwQMCwgHCQcHBQYKBwkMDAgIBwUJCggJCQkJBgwJBwcFBAUNEAYABgYKCQsJ + AwcHBggFBgUFCAQICQkKCQgJCAYGCAgIBwwICwkKCQgJCQQHCQcLCQkJCggKCAkIDQcJCwgH + CAUIBwkIBwkHBQcIAwQGAwsICAkJCQgFBwYJBgYHBwMICAkFBQUQBQUHEAoFDwsEBAUGBggL + BwoHBg4HCQYFBwkICQMHBwsGCAgGCwcHCAYGBwgIBgcDBQgLCw0HCAgICAgJDQkJCQkJBAQE + BAoJCQkJCQkGCQkJCQkJCQoICAgICAgNBwcHBwcDAwMDCAgICAgICAcIBwcHBwYKBgMHAwcH + BwcHBwgIBwAICQkICQkECAgICAYJCQcICAgICAkJBwkHCQcJBwkKCQkJBwkHCQcJCAkHCgcK + BwoHCgcJCAkHBAMEAwQDBAMECwcHBAkGBgcDBwMHBQcFCQgJCAkICAoICQgJCAkICAgICAgI + CgcKBwoHCAUIBggFCQcJBwkHCQcJBwkHDQkJBgsHCwcFDQwJCAoHCAUGCwgJDQ0JCQgFCgsJ + CQkJCgYNCQcIBQUFDxIHAAcHDAsNCgQICAcKBQcGBgkFCgoLCwoKCgoHBwkJCQgOCg0KDAsJ + CwoECAsIDAsKCgwJCwkLCQ8JCg0JCAkGCQgKCQgLCAYICQQEBwQMCQkLCgoJBggGCwcHCQgE + CAkLBQYFEgUFCBILBhINBAQGBwcJDQgLCAcPCQoHBggLCQoECAgMBwkJBwwICAoHBwgJCgcI + BAYKDAwPCAoKCgoKCg8KCwsLCwQEBAQMCwoKCgoKBwoLCwsLCgoLCgoKCgoKDggICAgIBAQE + BAkJCQkJCQkICQgICAgHDAcECAQICAgICAgKCQgACQoKCQoLBAkJCQkHCgoICgoKCgoKCggK + CAoICggLDAsLCwgLCAsICwkLCAsICwgLCAsICgkKCQQEBAQEBAQEBAwICAQLBwcIBAgECAYI + BgsJCwkLCQkLCQoJCgkKCQkJCQkJCQsICwgMCAkGCQYJBgsICwgLCAsICwgLCQ8LCgcNCQ0J + BQ8NCgkLCAkGBwwJCw8PCgoJBgwMCgsLCwsHDwsICQYFBhATBwAHBw0LDQsECAkHCgYHBgcK + BQoLDAsLCgsKBwcKCgkJDgoOCwwLCgwLBQgLCQ0LCwsNCgwJDAoQCQsNCggKBwkJCgoJCwkG + CAkEBQgEDgoJCwsKCQYJBwwHCAkJBAkKDAYGBhMGBgkTDAcTDQUFBgcICg0JDAkHEAkLBwYJ + CwkLBAgJDQcKCgcNCQgKBwgJCgoHCQQHCg0NEAgKCgoKCgoQCwsLCwsFBQUFDAsLCwsLCwcL + CwsLCwsLCwoKCgoKCg8JCQkJCQQEBAQJCgkJCQkJCAkJCQkJCAwIBAkECQkJCQkJCgkIAAkL + CwoLCwUKCgoJBwsLCQoKCgoKCgsJCwkLCQsJDA0MCwsJCwkLCQsKCwkMCQwJDAkMCQsJCwoF + BAUEBQQFBAUNCQgFCwgICQQJBAkGCQcLCgsKCwoKDAoLCQsJCwkKCgoKCgoMCQwJDAkJBgkH + CQYLCQsJCwkLCQsJDAkQDAsIDQkNCQYQDgsJDAkJBgcNCgwQEAsLCgYNDQsMCwwMCBAMCQkG + BgYRFAgACAgODA4LBAkJCAsHCAcHCwULCwwNDAsLCwgICgoKCQ8LDgsNDAoNCwUJDAoNDAsL + DgsMCgwKEQoLDgoJCgcKCQsKCQwJBwgKBAUIBQ4KCgwMCwoHCgcMCAgKCQQJCgwHBwYUBgYJ + FAwHFA4FBQYHCAsOCQ4JBxEKCwgHCQwKCwQJCQ0ICgoIDQkJCwcICQoLCAkEBwsODhEJCwsL + CwsLEQsMDAwMBQUFBQ0MCwsLCwsICwwMDAwLCwwLCwsLCwsQCgkJCQkEBAQECgoKCgoKCgkK + CgoKCggNCAQKBQkJCQkJCQsKCQAKDAsLDAwFCgoKCgcLCwkLCwsLCwsLCQsJCwkLCQwODAwM + CQwJDAkMCgwJDQkNCQ0JDQkLCgsKBQQFBAUEBQQFDgkJBQwICAoFCgUKBgoHDAoMCgwKCgwK + CwoLCgsKCgoKCgoKDAkMCQ0JCgcKBwoHDAoMCgwKDAoMCgwKEQwLCA4KDgoGEQ8LCgwJCgcI + DgoMERELCwoHDQ4LDAwMDAgRDAkKBwYHExcJAAkJDw0QDQUKCgkMBwkHCAwGDAwODg0MDAwJ + CQsMCwoRDBANDg4MDgwGCg0LDw4NDQ8MDgsNCxILDRAMCgsICwoMDAoNCgcKCwUFCQUQCwsO + DQwLBwsIDgkJCwoFCgwOBwcHFwcHChYOCBcQBgUHCAkMEAoPCggTCw0JBwoNCw0FCQoPCAsL + CQ8KCgwICQoMCwkKBQgMDw8SCgwMDAwMDRMNDg4ODgYGBgYODg0NDQ0NCQ0NDQ0NDQ0NDAwM + DAwMEgoKCgoKBQUFBQsLCwsLCwsKCwsLCwsJDgkFCwUKCgoKCgoMCwoACw0NDA0NBQwMCwsI + DA0KDAwMDAwMDQoNCg0KDQoODw4NDgoOCg4KDgsOCg4KDgoOCg4KDQsMCwYFBgUGBQYFBg8K + CgUNCQkLBQsFCwcLCA4LDgsOCwsNCw0LDQsNCwwLDAsMCw4KDgoOCgsHCwgLBw0LDQsNCw0L + DQsNCxIODQkQCxALBxMRDQsOCgsHCQ8MDhISDQ0MBw8QDQ4ODg4JEg4KCwcHBxUZCQAJCREO + EQ4GCwsJDQgKCAkNBw0ODw8PDQ0NCgkNDQwLEg4RDhAPDQ8OBgsPDBEPDg4RDQ8MDw0UDA4S + DQsNCQwLDQ0LDgsICwwGBgoGEQ0MDw4NDAgMCQ8JCgwLBQwNDwgIBxkICAsZDwkZEgYGCAkK + DRILEAsJFQwOCQgLDwwOBQoLEAkNDQoQCwsNCQoLDQwKCwYJDRERFAsODg4ODg4VDg8PDw8G + BgYGEA8ODg4ODgoODw8PDw4ODw0NDQ0NDRQLCwsLCwYGBgYMDQwMDAwMCwwMDAwMChAKBgwG + CwsLCwsLDgwLAAwODg0ODwYNDQ0MCQ4OCw4NDg0ODQ4LDgsOCw4LDxEPDg8LDwsPCw8MDwsQ + CxALEAsQCw4MDgwGBgYGBgYGBgYRDAsGDwoKDAYMBgwIDAkPDQ8NDw0NDw0ODA4MDgwNDQ0N + DQ0PCw8LEAsMCAwJDAgPDA8MDwwPDA8MDwwUDw4KEgwSDAcVEw4MDwsMCAoRDQ8UFA4ODQgR + EQ4PDw8PChQPCwwIBwgYHAsACwsTEBMQBg0NCw8JCwkKDwcPEBEREQ8PDwsLDg8ODBUPFBAS + EQ8SEAcMEQ4TERAQEw4SDhEPFw4QFA8MDgoODQ8PDRANCQ0OBgcMBhMODhERDw0JDQoSCwwO + DQYNDxEJCQgcCQkNHBIKHBQHBgkKCw8UDRINChgOEAsJDREOEAYLDRILDg8LEg0MDwsLDQ8P + Cw0GCg8TExcMDw8PDw8PGBARERERBwcHBxIREBAQEBALEBEREREQEBAPDw8PDw8WDA0NDQ0G + BgYGDg4ODg4ODg0ODQ0NDQwSDAYOBg0NDQ0NDQ8ODAEOEBAPEBEHDw8ODgoQEA0PDw8PDw8Q + DRANEA0QDRETERARDRENEQ0RDhENEg0SDRINEg0QDhANBwYHBgcGBwYHFA0MBxEMDA4GDgYO + CQ4KEQ4RDhEODhEOEA4QDhAODw8PDw8PEg0SDRINDgkOCg4JEQ0RDRENEQ0RDRENFxIQDBQO + FA4IGBYQDhINDgkLEw8RFxcQEA8JExQQEhESEgwXEg0OCQgJGyAMAAwMFhIWEgcODwwRCg0L + CxEIERIUExMREREMDBAREA0XERYSFBMRFBEIDhMPFBMSEhURFBATEBoQEhcQDhALEA8REQ4S + DwsOEAcIDQcWEBATExEPCg8MFAwNDw4HDhEUCgsJIAoKDx8UCyAXCAcKCw0RFw8UDwwaDxIM + Cw4TEBIHDQ8UDBARDRQPDhEMDA8SEAwOBwsRFhYaDREREREREhsSExMTEwgICAgUExISEhIS + DRITExMTEhISERERERERGQ8PDw8PBwcHBxAQEBAQEBAOEA8PDw8NFA0HDwcPDw8PDw8REA4B + EBISERMTCBEREBALEhIPEREREREREg4SDhIOEg4UFRQSEw8TDxMPEw8TDxQPFA8UDxQPEhAR + EAgHCAcIBwgHCBYPDggTDQ0PBw8HDwoPCxMQExATEBATEBIQEhASEBAQEBAQEBQPFA8UDxAK + EAwQChMPEw8TDxMPEw8TDxoUEg0XDxcPCRsYEhAUDxAKDRYRFBoaEhIRCxUWEhQTFBQNGhQP + EAoJCx0iDQANDRcUGBMIDxANEwsNCwwSCRITFRUUEhITDQ0REhEPGRMYExYVEhUUCQ8VEBYV + ExQXEhURFRIcERQYEg8RDBEQEhIPFBALDxEICA4IGBERFRQSEAsQDRUNDhAPCBESFQsLCiIK + ChAiFQwiGAkICwwOEhgQFxANHRAUDQsPFBEUCA4QFg0REg0WEA8TDQ0QExINDwgMEhgYHA8T + ExMTExMdExUVFRUJCQkJFhUTExMTEw4TFBQUFBQUFBMTExMTExsQEBAQEAgICAgRERERERER + DxEQEBAQDhUOCBAIEBAQEBAQExEPAREUFBIUFQgSEhERDBMTEBMTExMTEhMPEw8TDxMPFRcV + FBUQFRAVEBURFRAVEBUQFRAVEBMRFBEJCAkICQgJCAkYEA8IFQ4OEAgQCBALEAwVERURFRER + FBETERMRExESEhISEhIVEBUQFhARCxEMEQsUEBQQFBAUEBQQFREcFRQOGBAYEAodGhMRFRAR + Cw0XEhUcHBQUEgsXGBQVFRUVDhwVEBELCgsgJg4ADg4aFRoVCRERDhQMDw0NFAoUFRcXFhQT + FQ8OExQTEBwVGhUYFxQYFQkRFxIZFxUWGRQXExcTHxIWGxQQEw0TERUUERYRDRETCAkQCBoT + ExcWFBEMEg4XDhASEQgSFBcMDQslCwsRJRcNJhsKCAwNDxQbERkRDiASFg4MERYTFggPERgO + ExQPGBEQFA4OERUTDxEIDRQaGh8QFRUVFRUUIBUXFxcXCQkJCRgXFRUVFRUPFRcXFxcWFhYU + FBQUFBQeEREREREICAgIExMTExMTExETEhISEhAXEAgSCBERERERERUTEAETFhYUFhcJFBQT + Ew4VFREVFBUUFRUVERURFREVERcZFxYXERcRFxEXEhcRGBEYERgRGBEVExUTCQgJCAkICQgJ + GhIRCRcQEBIIEggSDBINFxMXExcTExcTFRMVExUTFBMUExQTFxEXERgREwwTDhMMFxIXEhcS + FxIXEhcSHxcWEBsSGxILIB0VExcREwwPGhQXHx8WFhQNGRoWFxcXFxAfFxETDAsMIScPAA8P + GhYaFgkREg8VDQ8NDhUKFRYYGBcVFBUPDxQUExEcFRsWGBgUGRYKERcTGhgWFhoVGBMXFCAT + FhwUERQOExIVFBIWEg0SEwkJEAkbFBMYFxQSDRIOGA8QExIJEhQYDQ0MJgwMEiYYDiccCggM + DRAUHBIaEg4gExYPDRIXExYJEBIZDxQUDxkSERUODxIVFA8SCQ4VGxsgEBUVFRUVFiEWGBgY + GAoKCgoYGBYWFhYWDxYXFxcXFhYXFRUVFRUVHhISEhISCQkJCRMUExMTExMRExISEhIQGBAJ + EwkSEhISEhIVFBEBExYWFBcXCRQUFBMOFhYSFRUVFRUVFhIWEhYSFhIYGhgWGBIYEhgSGBMY + EhgSGBIYEhgSFhMWEwoJCgkKCQoJChsSEQkXEBATCRMJEwwTDhgUGBQYFBQYFBYTFhMWExQU + FBQUFBgSGBIYEhMNEw4TDRcSFxIXEhcSFxIXEiAYFhAcExwTDCEeFhMYEhMNDxsUGCAgFhYU + DRobFhgYGBgQIBgSEw0MDSUsEQARER4YHRkKFBQRGA4RDw8XCxgZGxsaGBYYEREWFxYSIBge + GBsbFxsZCxMaFRwbGRkdFxsWGhYkFRkfFxMWEBYUFxcUGRQPFBUKCxIKHxYWGhkXFA4VEBsR + EhUUChUXGw4PDSwNDRQsGw8sHwsJDg8RFx8UHRQQJBUZEQ4UGhYZChIUHBAWFhEcFBMYEREU + FxcRFAoQFx4eJBIYGBgYGBglGBsbGxsLCwsLGxsZGRkZGREZGhoaGhkZGRgYGBgYGCIUFBQU + FAoKCgoWFhYWFhYWExYVFRUVEhsSChUKFBQUFBQUGBYTARYZGRcZGgsXFxYWEBgYFBgYGBgY + FxgUGBQYFBgUGx0bGRsUGxQbFBsVGxQbFBsUGxQbFBkVGRYLCgsKCwoLCgseFBMLGhISFQoV + ChUOFQ8bFhsWGxYWGhYZFhkWGRYXFhcWFxYbFBsUGxQWDhYQFg4aFRoVGhUaFRoVGhUkGxkS + HxUfFQ0lIRkWGxQWDhEeFxskJBkZFw8dHxkbGhsbEiQbFBYODQ4qMhMAExMiHCEcDBYXExsQ + ExERGg0bHB8eHRsbGxMTGRoZFiQbIhweHhofGwwWHhghHhwcIRkfGR0ZKRgcIxoWGRIZFxsa + FhwXERcYCwwVCyIZGR4dGRYQGBIfExQYFgsXGh8QEQ8yDw8XMR8RMiMMCxAQFBojFyEXEikY + HBMQFh0ZHAsUFx8TGRoTHxcWGxITFxsZExYLEhsiIikVGxsbGxsbKhweHh4eDAwMDB4eHBwc + HBwUHB4eHh4cHBwbGxsbGxsmFhcXFxcLCwsLGRkZGRkZGRYZGBgYGBQeFAsYCxcXFxcXFxsZ + FgEZHRwaHR4MGhoZGRIcHBcbGxsbGxscFhwWHBYcFh8hHxweFx4XHhceFx4XHxcfFx8XHxcc + GBsYDAsMCwwLDAsMIhcWDB4VFRgLGAsYEBgRHhkeGR4ZGR4ZHBkcGRwZGhkaGRoZHxcfFx8X + GRAZEhkQHhgeGB4YHhgeGB0XKR8cFCMYIxgPKiYcGR8XGRATIhofKSkcHBoRISMcHx4fHxQp + HxcZEA8QLjcVABUVJR8lHw0YGRUdERUSEx0OHR4hISAdHR0VFRwcGxcnHiUeISEcIh8OGCEa + JCEfHyUcIhshHC0bHyccGBwTGxkdHBgfGRIZGwwNFgwnHBshIBwZEhoUIhUWGhkMGhwhERIQ + NhAQGTYiEzcnDgwREhYcJxkkGRQsGh8VEhggGx8MFhkiFBscFSIZGB0UFRkeHBUYDBMdJSUt + GB4eHh4eHS4eISEhIQ4ODg4hIR8fHx8fFR8gICAgHx8gHR0dHR0dKhgZGRkZDAwMDBscGxsb + GxsYGxoaGhoWIRYMGgwZGRkZGRkeGxgBGx8fHCAhDRwcHBsUHh4ZHh0eHR4dHhgeGB4YHhgh + JSEfIRkhGSEZIRkhGSIZIhkiGSIZHxsfGw4MDgwODA4MDiUZGA0hFhYaDBoMGhEaEyEcIRwh + HBwiHB8bHxsfGxwcHBwcHCIZIhkiGRsSGxQbEiAaIBogGiAaIBohGi0iHxYnGicaEC4pHxsi + GRsSFSUcIS0tHx8cEiQmHyIhIiIWLSIZGxIQEjI7FwAXFygiKCENGhsWIBMXFBUgECAhJCQj + IB8gFxYeHx0ZKiAoISQkHyUhDxojHCckISIoHyUdIx4xHSIqHxoeFR0bIB8bIRsUGx0NDhgN + Kh4dJCIeGxMcFiQWGBwbDRsfJBMUEjsSEhs7JRU7Kg8NExMYHyobJxsWMBwiFxQbIx0iDRgb + JRYeHhclGxogFhYbIB4XGw0VICkpMRkgICAgICAyISQkJCQPDw8PJCQhISEhIRchIyMjIyIi + IiAgICAgIC0bGxsbGw0NDQ0dHh0dHR0dGh0cHBwcGCQYDRwNGxsbGxsbIB4aAR0iIh8iIw4f + Hx4dFiEhGyAgICAgICEbIRshGyEbJCgkISQbJBskGyQbJBslGyUbJRslGyEdIR0PDQ8NDw0P + DQ8pGxoOIxgYHA0cDRwTHBUkHiQeJB4eJB4hHSEdIR0fHh8eHx4lGyUbJRsdEx0VHRMjHCMc + IxwjHCMcIxwxJCIYKhwqHBEyLSEdJRsdExcoHyQxMSIiHxQoKSIkJCQlGDEkGx0TEhQ2QBgA + GBgrJCwkDh0eGCMUGRUWIhEiJCcnJSIiIxkYICEgGy4jLCQoJyEoJBAcJh8qJyQkKyEoICYh + NB8lLSEcIBcgHSIhHSQdFR0fDhAaDiwgICclIR0VHhcnGBofHQ4eIScUFRM/ExMdPygWQC0Q + DRQWGSEtHSodFzQfJRgVHSYgJQ4ZHSgYICEZKB0cIxgYHSIhGR0OFyIsLDUbIyMjIyMjNSQn + JycnEBAQECgnJCQkJCQZJCYmJiYlJCUjIyMjIyMwHB0dHR0ODg4OICAgICAgIBwgHh4eHhon + Gg4fDh0dHR0dHSMgHAEgJSQhJSYQISEgIBcjJB0jIyMjIyIkHSQdJB0kHScrJyQnHScdJx0n + HScdKB0oHSgdKB0kHyQfEA4QDhAOEA4QLB4cECYaGh8OHw4fFB8WJyAnICcgICYgJCAkICQg + ISEhISEhKB0oHSgdIBUgFyAVJh4mHiYeJh4mHiYdNCclGi0fLR8TNTEkICgdIBUZLCEnNDQk + JSEVKy0kJycnKBo0Jx0gFRMVOkUaABoaLicvJg8fHxolFRsXGCUSJSYqKiglJCUbGiMkIh0y + JS8mKyojKyYRHikhLionJy4jKyInIzghJzEjHiMYIiAlJB8nIBcfIg8RHA8wIyIpKCMfFiAZ + KhocIR8PICMqFRcURBUVIEMrGEUxEQ8WFxskMSAtHxk4IScaFx8pIicPGyArGiMkGysgHiUZ + GyAlIxsfDxglLy84HSUlJSUlJTkmKioqKhERERErKicnJycnGycpKSkpJycoJSUlJSUlNCAg + ICAgDw8PDyIjIiIiIiIeIiAgICAcKRwPIQ8gICAgICAlIh4BIicnJCgpESMkIyIZJiYgJSUl + JSUlJh8mHyYfJh8qLionKiAqICogKiAqICsfKx8rHysfJyImIhEPEQ8RDxEPES8gHhEpHBwh + DyEPIRYhGCojKiMqIyMpIyciJyInIiMjIyMjIysfKx8rHyIWIhkiFikgKSApICkgKSAnITgq + JxwxITEhFDk0JyIrHyIWGy8kKjg4JycjFy4wJyopKiscOCofIhYUF0NPHgAeHjYuNiwSJCUe + KxkfGhwqFSssMTAuKysrHx4oKSciOSs2LDEwKTItFCMvJjUwLS01KTEnLyhBJy04KSMoHCck + KykkLSQaJScSEyESOCgnMC4oJBomHTEeISYkESUpMRkaF08YGCRPMRxPOBQQGRsgKTgkNCQd + QCYtHhokLyctESAkMh4oKh8yJCMrHh4kKykfJBIcKjY2QSIrKysrKytCLDAwMDAUFBQUMTAt + LS0tLR8tLy8vLy0tLSsrKysrKzwjJCQkJBISEhInKCcnJycnIycmJiYmITAhEiYSJCQkJCQk + KygjAicuLSkuLxMpKSgnHCwsJCsrKysrKywkLCQsJCwkMTUxLTAkMCQwJDAkMCQxJDEkMSQx + JC0nLScUEhQSFBIUEhQ2JSMTLyEhJhImEiYZJhwwKDAoMCgoMCgtJy0nLScpKCkoKSgxJDEk + MiQnGicdJxovJi8mLyYvJi8mLyZBMS0hOCY4JhdCPC0nMSQnGh82KTFBQS0tKRo1Ny0xMDEx + IUExJCcaFxpLWSIAIiI8MjwyFCgoIjAcIx0fLxcwMTc1NDAwMCMiLS4sJj8wPDI2Ni44MhYn + NSo7NjIzPC03LDUtSSszPy4nLSAsKTAuKDMpHSgsFBYlFD4tLDY0LSkdKiA3IiQrKBMpLjYc + HRpZGxspWDcfWT8WExweIy4/KTopIUgrMyIdKDUsMxMkKTghLS4jOCknMCEhKTEtIygUHzA9 + PUkmMDAwMDAwSjI2NjY2FhYWFjY2MjIyMjIjMjU1NTUzMzMwMDAwMDBDKCkpKSkUFBQULC0s + LCwsLCcsKioqKiQ2JBQqFCkpKSkpKTAsJwIsMzMuNDUWLi4tLCAxMSkwMDAwMDAyKDIoMigy + KDc8NzM2KTYpNik2KDYpNyg3KDcoNygyLDIsFhQWFBYUFhQWPSknFjUlJSoUKhQqHCofNi02 + LTYtLTUtMiwyLDIsLi0uLS4tNyk3KTcpLB0sICwdNSo1KjUqNSo1KjUqSTczJD8rPysaSkMy + LDcpLB0jPS43SUkyMy4dOz4zNzY3NyRJNyksHRodAAAAAwAAAAMAAARaAAEAAAAAABwAAwAB + AAACJgAGAgoAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAMBjQGMAAQABQAGAAcACAAJAAoACwAMAA0ADgAP + ABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAq + ACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABF + AEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwAA + AGAAAABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAAABsAAAAAABtAG4AbwBwAHEAcgBzAHQAdQB2 + AHcAeAAAAHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQ + AJEAkgCTAJQAlQCWAJcAmACZAJoAmwCcAJ0AngCfAKAAoQCiAKMApAADAKYApwCoAKkAqgCr + AKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC6ALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDG + AMcAyADJAMoAywDMAM0AzgDPANAA0QDSANMA1ADVANYA1wDYANkA2gAEAjQAAABwAEAABQAw + ACIAfgD/ATABMQFAAUIBUQFTAV8BYQF3AX8BkgH/AhsCxwLbAt0DlAOpA7wDwB4DHgseHx5B + HlceYR5rHoUe8yAVIBogHiAiICYgMCA6IEQgrCEiISYiAiIGIg8iEiIaIh4iKyJIImAiZSXK + +wL//wAAACAAIwCgAQABMQEyAUEBQwFSAVQBYAFiAXgBkgH8AhgCxgLYAtwDlAOpA7wDwB4C + HgoeHh5AHlYeYB5qHoAe8iATIBggHCAgICYgMCA5IEQgrCEiISYiAiIGIg8iESIaIh4iKyJI + ImAiZCXK+wH//wAA/+H/2//3AAD/9gAA//QAAP/yAAD/8AAA/tD/cf9ZAAD+BwAA/VD9PPzU + /SbjdAAA41/jPwAAAADjIAAAAAAAAAAAAAAAAOA+4DgAAOCj37TfU9+/3ube3t7a3tne0t7P + 3sPep96Q3o3bKQXzAAEAcAAAAAAAAABuAAAAbAAAAGwAAABsAAAAbAAAAAAAAAB0AAAAdAAA + AAAAAAAAAAAAbAAAAAAAagBsAAAAbAB2AHgAfACAAIQAAAAAAIQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAMBjQGMANsA3ADdAGsAeABpAHYAegFoAWkBagFrAGwAeQFs + AGcA3gB0AOMBeAF7AYEBgwGFAYkBeQGCAXoBhAGHAYgBfAGGAHIAcwF1AG0AbgBhAG8AcABj + AGUAZgBxAGoAdwAEAjQAAABwAEAABQAwACIAfgD/ATABMQFAAUIBUQFTAV8BYQF3AX8BkgH/ + AhsCxwLbAt0DlAOpA7wDwB4DHgseHx5BHlceYR5rHoUe8yAVIBogHiAiICYgMCA6IEQgrCEi + ISYiAiIGIg8iEiIaIh4iKyJIImAiZSXK+wL//wAAACAAIwCgAQABMQEyAUEBQwFSAVQBYAFi + AXgBkgH8AhgCxgLYAtwDlAOpA7wDwB4CHgoeHh5AHlYeYB5qHoAe8iATIBggHCAgICYgMCA5 + IEQgrCEiISYiAiIGIg8iESIaIh4iKyJIImAiZCXK+wH//wAA/+H/2//3AAD/9gAA//QAAP/y + AAD/8AAA/tD/cf9ZAAD+BwAA/VD9PPzU/SbjdAAA41/jPwAAAADjIAAAAAAAAAAAAAAAAOA+ + 4DgAAOCj37TfU9+/3ube3t7a3tne0t7P3sPep96Q3o3bKQXzAAEAcAAAAAAAAABuAAAAbAAA + AGwAAABsAAAAbAAAAAAAAAB0AAAAdAAAAAAAAAAAAAAAbAAAAAAAagBsAAAAbAB2AHgAfACA + AIQAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBjQGMANsA3ADd + AGsAeABpAHYAegFoAWkBagFrAGwAeQFsAGcA3gB0AOMBeAF7AYEBgwGFAYkBeQGCAXoBhAGH + AYgBfAGGAHIAcwF1AG0AbgBhAG8AcABjAGUAZgBxAGoAdwAAuAAALEu4AAlQWLEBAY5ZuAH/ + hbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCK + SWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTot + uAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS/9LbgABSxLILADJlBYUViwgEQb + sEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24 + AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILAD + JlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMh + G7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AuAAAKwC6AAEAAwACKwG6AAQABAACKwG/ + AAQAYQBNADwAKwAcAAAACCu/AAUAdgBjAE0ANwAcAAAACCu/AAYAaABNADwAKwAcAAAACCu/ + AAcAWABNADwAKwAcAAAACCsAvwABAF8ATQA8ACsAHAAAAAgrvwACAHsAYwBNADcAHAAAAAgr + vwADAFYATQA8ACsAHAAAAAgrALoACAAEAAcruAAAIEV9aRhEACoAdwBcAIMAdQBgAG0AgQAA + ADH9rgBaA/4AAAV/AAAAAAAAAAAAAAAAAWIC4ARmBcQGRgbGB1oIOAkSCYoJxgokCmILNAuq + DKQN7A6kD5YQgBD8EmITchPsFKQU/BVwFcoW6hiIGUQa8hu2HJgdyh6iH/whECGMIhQjDiOo + JMIlciZ8J1godCnCKvYrpCzGLTYt9i52Lx4wODEAMUIxyDJgMrAy6jP4NSY14jc8OGQ5djqC + O4g8HjzIPbY+Rj+wQLRBsEKqQ6ZEjEVqRjpHWEf4SKhJIkmOSr5L4ExkTahN+k8+T7RQ7FGK + UoRTLFPyVDxWklaeVvRYyljWWUxZvlqqW3hbqlvkXCZccl36XgZeUmAuYDpgRmBGYOZiImPY + ZSJmOmbsZ+hojmneaqRrQmvabBZt7G4obwBv2nCCcVhxjHKec+50OHSmdSh2Jnasd7Z4lnoG + eyp7NntCe058NnxCfZ5+8IAqgDaAQoBOgFqAZoBygH6AioG4gcSB0IHcgeiB9IIAgnCDhIOQ + g5yDqIO0g8CE+oaQhpyGqIa0hsCGzIbYiRSKOopGilKKXopqinaKgoqOipqL5ovyi/6MCowW + jCKMLozSje6N+o4GjhKOHo4qjySPMI+okHiRQpGMkgiSWpMWk5ST9JSGlbaW1pcQmBSZHJne + mhyalJvCnKKdOJ3ynoKfEKA+oEqgVqDGoNKg3qDqoPaiGqOIo5SjoKOso7ijxKPQo9yj6KP0 + pACkCKV6pYalkqWepaqltqXCp3ypBKkQqRypKKk0qUCpTKlYqWSpcKl8qYiplKsCrEysWKxk + rHCsfKyIrJStiK64rsSu0K7cruivuK/Er9CwrrC6sMiw1LGosbSxwLHMsdix5LHwsfyyCLIU + siCyLLNCtC60OrRGtFK0XrRqtHa0grSOtJq0prSytL60yrTWtOK07rZyt7S48roSuwS7ELv8 + vSC9LL04vUS9UL1cvWi9dL2AvYy9mL8swL7AysDWwOLA7sD6wQbBEsEewhzCKMI0wkDCTMJY + wmTDosTCxP7FCsUWxSLFLsU6xUbFUsVexWrFdsWCxY7FmsWmxbLFvsXKxdbF4sXuxfrGBsak + xz4AAAACAB3/BgZMBVIAkgCgARa7AAgABwAVAAQruwCIAAQABQAEK0EhAAYACAAWAAgAJgAI + ADYACABGAAgAVgAIAGYACAB2AAgAhgAIAJYACACmAAgAtgAIAMYACADWAAgA5gAIAPYACAAQ + XUEDAAYACAABcUEFABUACAAlAAgAAnG4ABUQuQANAAf0uAAVELgAI9C4ACMvuAAVELgAJtC4 + ACYvuAAIELgAS9C4AEsvuAAFELgAT9C4AIgQuABl0LgAZS+4AIgQuABo0LgAiBC4AHnQuAAI + ELgAk9C4AJMvuAAFELgAltC4AJYvuAAFELgAmtC4AAgQuACe0LgAni8AuAAQL7gAWi+6AAUA + EABaERI5ugAmABAAWhESOboASwAQAFoREjkwMSU+AzcOAQceAxUUBiMiLgInDgEjIi4CNTQ2 + MzI2NzQ2Nw4DBw4BIyImNTQ+Ajc+Azc+AzMyHgIVFAYHDgEHPgE/ATU0PgI3PgMzMh4CFRQG + BwYUFRQWHQE+AzMyFhUUBgcOAwcVPgMzMhYVFA4CDwEVFA4CIyImNTQDPgE3NTQmNQ4BDwEO + AQPRAQMDAgFFjUgGFhcQEBkVMC4kCWCrRC1LOB8gHVX5jwMFM2liViAaKQ8MDRkqOSASQ1dp + OQgXGx0PDxMLBQUCBgkFMWAtVgUKDQkMGhkVBgYNCwcXFgIEQnRfRxUnJBglI1hkazVln3VJ + DxcQK1N3S7gJEh0UNDLmSZFHAkh4JTMEA3cILD1IJhctFFaTcEsOHCo8drB1FxwZIiYMGBUi + HTmGRw8gHhwMIy0lKxsoIBoNBxUXGg1htY1VHS85HB41DiZxQwoTCA+kJlZOQBAWHhEHExoc + CRMQBgcVDiVwQX8HCAUBBRAPDQUFDA8RCPoaMCQVDhEKISszHETRHzYpFxsSHAE+DyMRLS9w + Og4XCg5SkAAAAAADAE7+7AUOBckAawB5AIYBi7sAUQAFAEsABCu7AC8ABgB1AAQrugAOAEsA + LxESOUEFABoAdQAqAHUAAnFBIQAJAHUAGQB1ACkAdQA5AHUASQB1AFkAdQBpAHUAeQB1AIkA + dQCZAHUAqQB1ALkAdQDJAHUA2QB1AOkAdQD5AHUAEF1BAwAJAHUAAXG4AHUQuAAZ0LgAGS9B + IQAGAFEAFgBRACYAUQA2AFEARgBRAFYAUQBmAFEAdgBRAIYAUQCWAFEApgBRALYAUQDGAFEA + 1gBRAOYAUQD2AFEAEF1BAwAGAFEAAXFBBQAVAFEAJQBRAAJxuABLELgAZNC6AHoASwAvERI5 + ugCCAEsALxESObgALxC4AIjcALgABS+4ADwvuwBWAAEAQwAEK7sAKgABAF8ABCu6AA4APAAF + ERI5uABDELgAQdC4AEEvuABWELgAWdC4AFkvuABfELgAWtC4AFovuABfELgAb9C4AG8vuAAq + ELgAetC4AHovuAAqELgAfdC4AH0vuAAqELgAf9C4AH8vugCCADwABRESOTAxATQ+AjMyHgIV + FAYdAT4BMzIWFx4DFRQOAiMiJjUmIiMiDgIHEx4BFwQRFA4CBx4BFRQOAiMiLgE0JwYjIiYn + LgM1NDYzMhYVFB4CMzI2NxEiDgIjIi4CNTQ+BDcBLgEnEz4DNTQuAiU+ATMyFzQ2NQ4DAmoB + CRMRExcMBAFypi0OFAUSJyEVEBgdDhIaBQUEF0ZXYjQGSHYqAUtbmMRpAgIZIiMJDgwEAyop + J0wjQHBTMBMMDhgpWIpiGjQaPHdsXCEfLyAQKUhleIdHAVsvdUINWJ52RiE6T/zjOnY8VFEC + SIhuSwU1EjIvIRckLhgRHw5MIhYBAQMaICEJCRQRCxIVAQwXHxP+yQUMCD/+9UF2YEgTQlYM + HTMmFSZIakQDBQgNOU9iNhMaKzcJLzImAwQCDAIDAgUgQj4TNkBGRUIb/d0JCQL+DxhLV1op + FzEsI4IEAwNFhD8eREVGAAAAAAMAOf6aBi0FdQBfAIAAlwGAuwAPAAQAVgAEK7sAiQAEAGAA + BCu7AHcABACVAAQrQSEABgAPABYADwAmAA8ANgAPAEYADwBWAA8AZgAPAHYADwCGAA8AlgAP + AKYADwC2AA8AxgAPANYADwDmAA8A9gAPABBdQQMABgAPAAFxQQUAFQAPACUADwACcboASQBW + AHcREjlBBQAaAGAAKgBgAAJxQSEACQBgABkAYAApAGAAOQBgAEkAYABZAGAAaQBgAHkAYACJ + AGAAmQBgAKkAYAC5AGAAyQBgANkAYADpAGAA+QBgABBdQQMACQBgAAFxQQUAGgCVACoAlQAC + cUEhAAkAlQAZAJUAKQCVADkAlQBJAJUAWQCVAGkAlQB5AJUAiQCVAJkAlQCpAJUAuQCVAMkA + lQDZAJUA6QCVAPkAlQAQXUEDAAkAlQABcbgAdxC4AJncALgAKi+4ADwvuwAiAAIACAAEK7sA + jgABAHwABCu7ABEAAQBTAAQruAAiELgAANC4AAAvugBJAAgAIhESOTAxATIeAhUUBgcOBRUU + MzI+BDU0LgI1ND4CMzIWFz4DMzIWFRQGBw4FBw4DIyImNTQ2Nz4FNw4BBw4FIyImNTQ+Ajc+ + AxM0PgYzMh4CFRQGDwEeAxUUDgIjIi4CAS4BJw4DFRQeAjMyPgQ1NCYC3w8aEgoQEiR0hIdt + RCMie5CVek0GBgYIFikhFx8IOWFMOBESFSsjIW6KnJ+aQS0tGhUVCxEmNTSHl52VhDImYjUX + Z4ulqKFCODs5Wm00KmxpW3IvTWRqaVY8CQ4kIRYYGhYTLikbUoerWThmTC0CTg4ZBkKWgFQZ + KDMbH09TTz8mGgUvDxcbDRAVAgIxTV5hWiEbLkpcWlAaBBETEgcMIiAXGBUJKSwhKSUXWj88 + mrfR4/J9VnNGHignMqBqatXRzcK2UxMkCzR3dm1UMkA7KmZpYiYfQjck+2Q/enJoWkgzHAkO + EwoUGQwMFUdZZzZTnXtLGz1gAecTHQ4pdYuaTh4mFQcVLERcdkkuTAAAAAMAOf9zBTEFugBp + AHcAhQFQuwB1AAcAUgAEK7sALQAGAGUABCu4AC0QuAAL0LgACy+4AGUQuAAT3LgALRC4ABnQ + uAAZL7gALRC4ABzQuAAcL7gAZRC4ACTcuAAtELgAQdC4AGUQuABJ0LgASS+6AFkAUgAkERI5 + QSEABgB1ABYAdQAmAHUANgB1AEYAdQBWAHUAZgB1AHYAdQCGAHUAlgB1AKYAdQC2AHUAxgB1 + ANYAdQDmAHUA9gB1ABBdQQMABgB1AAFxQQUAFQB1ACUAdQACcboAXgBSAHUREjm4AF4vuABl + ELgAbdC4AG0vuABlELgAcNC4AHAvuABlELgAe9C4AHsvugB8AGUASRESObgAXhC5AIEAB/QA + uAAAL7gARi+7AGoAAQBNAAQruwB4AAIAWQAEK7oACwBGAAAREjm4AHgQuAA30LgANy+6AHAA + RgAAERI5ugB8AEYAABESOTAxATIWFRQGBw4DBz4BMzIeAhUUBgcOAQcUFhc+AzMyFhUUDgIH + DgEHEz4DNz4DMzIeAhUUDgIHFA4CIyImPQEOASMiLgI1ND4ENyIuAjU0PgQ3PgMBMjY3NDY1 + DgMVFBYTMjY3EQ4DFRQeAgMlFRQSEQ8bFA4CNk8TFSYdEBQdJWs/AgIkQjgsDyAqBRIgGyhr + PAZRk35kIhAQCwsLDAwGAWOj028CDh8cERZBeThLelcwJj5QUk8eZYVPITFSb3qBPAQlMTj+ + nzNmMgJPmnlKcIorWi1KjnBFJT1PBboQDAsZCQkfN1M8ERQNFR0PEhgFBhsUM4ZLChYSCyQd + DBIPCwYIHxT+sBU/TVowGCsiFAgXJh5IhHBaHj1zWTYaI+gNDB02TjIhPTcwKCENEiY8KRo6 + Pj47NRZehFMl+0AICE6iVB9FREAaLSUBwg4LAQAaPDw7GhAUCgQAAAABAKADbwGqBbwAKACO + uwAFAAcAJAAEK0EFABoAJAAqACQAAnFBIQAJACQAGQAkACkAJAA5ACQASQAkAFkAJABpACQA + eQAkAIkAJACZACQAqQAkALkAJADJACQA2QAkAOkAJAD5ACQAEF1BAwAJACQAAXG4ACQQuAAP + 0LgADy+4AAUQuQAXAAb0uAAFELgAKtwAuAAAL7gACi8wMQEyHgIVFA4CIyIuAjU0Njc+AzU0 + LgIjIg4CIyImNTQ+AgEQFTUwIDJIUR4HDAkFHw4kLRgJChEVCwcOEREKBRISHSMFvCRLdFA4 + Zk4uCg4RBgwbDiI2NDglH0E0IQgJCAoTBBcZEwAAAAEAc/6PBAQFsgAwAHa7AA8ABwAoAAQr + QSEABgAPABYADwAmAA8ANgAPAEYADwBWAA8AZgAPAHYADwCGAA8AlgAPAKYADwC2AA8AxgAP + ANYADwDmAA8A9gAPABBdQQMABgAPAAFxQQUAFQAPACUADwACcQC4AAAvuwAUAAMAIwAEKzAx + ATIWFRQOAgcOBRUUHgIzMjY3NjMyHgIVFA4CIyIuAjU0Ej4FA98WDwQMFRIyk6KhgVAzTl0q + V44tDwgHCQQCNFp4Q2WRXSxDcJGcmoJeBbISEwcLDhINJY294vb+em+RVSM3JQwNExgMHT0y + IFKGqFeGAQPx27uXazoAAAABACn+mgPRBb4ANwCOuwAvAAcAFgAEK0EFABoAFgAqABYAAnFB + IQAJABYAGQAWACkAFgA5ABYASQAWAFkAFgBpABYAeQAWAIkAFgCZABYAqQAWALkAFgDJABYA + 2QAWAOkAFgD5ABYAEF1BAwAJABYAAXG4AC8QuAA53AC7AA8AAwAAAAQruwAoAAMAGwAEK7gA + ABC5AAoAA/QwMRMiLgI1ND4CMzIeAjMyPgMSNTQuAiMiBgcGIyImNTQ+AjMyHgQVFAIOBcsm + PCoWExwhDgsCDCYwP4qGeVw2N117RSs8HAwICwwnP1IrQ3JcRzAYL1Jte4N9cf6aFCAnExMm + HxMbIBszaJ7VAQ2jjeGdVQkLBRIWFSohFDNae46bTrH+3eq0hlw4GQAAAAEASwIGA0UFiwBc + AMa7AD4ABgBGAAQruABGELgADtC4AA4vQSEABgA+ABYAPgAmAD4ANgA+AEYAPgBWAD4AZgA+ + AHYAPgCGAD4AlgA+AKYAPgC2AD4AxgA+ANYAPgDmAD4A9gA+ABBdQQMABgA+AAFxQQUAFQA+ + ACUAPgACcbgAPhC4ADvQuAA7L7gARhC4AEnQuABJLwC4ABUvuABBL7oADgBBABUREjm6AB0A + QQAVERI5ugAtAEEAFRESOboAOwBBABUREjm6AEkAQQAVERI5MDETLgE1NDYzMhYXHgMXPgUz + Mh4CFRQGFT4DMzIWFRQGBw4DBx4DFRQOAiMiJi8BBhQVFAYjIi4CNTQ2Nw4DIyIuAjU0PgI3 + LgNtEhAfFRImDgknN0QmAQMFBwoPCgkYFQ8CPUkvHxQRFh8VBiQ1QSJdcj0UDRQaDAgOBecC + KiYICwcDAQEnPjInERUaDQQZOV1EK1FFNgRvDxsLERMOEAodIygVGkpQTz4nFCIxHEReIjdB + IQoKCg0kEQUjNEAiNkQuHxIOFhAJAwWXJnJXOC8gN0srGzcdJjIcCwsPDgMOEiREQBw4MCgA + AAEASP/4BOEE1QBbAMG7AEQABwAPAAQrQQUAGgAPACoADwACcUEhAAkADwAZAA8AKQAPADkA + DwBJAA8AWQAPAGkADwB5AA8AiQAPAJkADwCpAA8AuQAPAMkADwDZAA8A6QAPAPkADwAQXUED + AAkADwABcbgARBC4AEHQuABBL7gADxC4AE/QuABPLwC4ABcvuAAARVi4AEcvG7kARwAIPlm7 + AAUAAQBUAAQruwAnAAMANAAEK7gANBC4AADQuAAAL7gANBC4ADHQuAAxLzAxEzIeAjMyPgQ3 + MjYzLgM1NDYzMh4CFRQWHwE+BTMyHgIVFA4CIyImIyIOAg8BHgUXHgEVFAYjIiY1NC4CJw4D + IyIuAjU0Nm0MExwvJwswQEhFOxMCAgIICggDDBEHHyAYBgUIKFxdWEkyCBQhGA0KDhEGDQ8T + BSAzQSX0AQMEBAMEAQECGBocIwQGCAU0ZVxOHS9FLhYMArQRFREECAsODwkCiatmMhIgGxou + QCYZbkR9ChYWEw4JDxcbDA4XEQoKBw0QCTscVF9jVkMQDBUKKC5RPgxSdpFNCxQOCCQvKwcW + FQAAAAABAKj+1wJGAVgAJwB+uwADAAYAFwAEK0EFABoAFwAqABcAAnFBIQAJABcAGQAXACkA + FwA5ABcASQAXAFkAFwBpABcAeQAXAIkAFwCZABcAqQAXALkAFwDJABcA2QAXAOkAFwD5ABcA + EF1BAwAJABcAAXG4AAMQuAAp3AC4AAovuwAAAAIAHAAEKzAxATIWFRQOBCMiJjU0PgI3PgM1 + NC4CIyIOAiMiNTQ+AgGmTlIpQlNSSRgXFgMKEg4tXEswDBETBxEaFhYMIBMiMgFYZmEnX2Nd + SCwgFQkNDRALIlReZjYTGQ8FCQsJHw8gGxIAAAABAGoBVANeAhcAIAAXALsADwADABoABCu4 + ABoQuQAFAAH0MDETMh4CMzI+Ajc+AzMyFhUUBgcOAyMiNTQ+An0FCRMlIg1DT0oVQGRSRiMR + Cx4uGGiTt2l1AgQIAeMGCAYGCAkDCRANCBALEysQCB4eFkIIGhkSAAABAQ7/2QISAPgAHABm + ugADAA0AAytBGwAGAAMAFgADACYAAwA2AAMARgADAFYAAwBmAAMAdgADAIYAAwCWAAMApgAD + ALYAAwDGAAMADV1BBQDVAAMA5QADAAJdALgAAC+4AABFWLgACi8buQAKAAg+WTAxJTIWFRQO + BCMiJjU0PgI3PgEzMhYzMj4CAdUWJxsqMzIqCxITBg0UDwgKBAcJCAcUGR74Ji4WMC0oHhIm + IBArLSsRCQcLDxIPAAH/0f7jA4gGJQAkAAsAuAAOL7gAIi8wMQc0PgISPgI3PgMzMhYVFA4D + AgcOAwcOAyMiJi87Yn+KinZaFBMdGRkREh41W3uMlkkiOTAoDwsQEBMOIBPTLanb/gED+dOd + JSNCNB8gGxh0q9r+/uWVRXJpZTkpNR8NIgAAAAACADkABATRBNkAIABCAO+4AEMvuABEL7gA + Cty4AEMQuAAY0LgAGC+5ADIABfRBIQAGADIAFgAyACYAMgA2ADIARgAyAFYAMgBmADIAdgAy + AIYAMgCWADIApgAyALYAMgDGADIA1gAyAOYAMgD2ADIAEF1BAwAGADIAAXFBBQAVADIAJQAy + AAJxuAAKELkAQAAF9EEFABoAQAAqAEAAAnFBIQAJAEAAGQBAACkAQAA5AEAASQBAAFkAQABp + AEAAeQBAAIkAQACZAEAAqQBAALkAQADJAEAA2QBAAOkAQAD5AEAAEF1BAwAJAEAAAXEAuAAA + L7sANwADABMABCswMQEyHgIXHgMVFA4GIyIuAjU0PgYXIg4CBw4DBw4FFRQeAjMyPgY1NCYE + Nx0gFhIQDg8HATxnipymn484IkU4JEd3naywnoI6EDtIUCURHyInGStweHRbOA4VFwkzhZWc + lIJiORcE2RwlKAwLMTgzDWG3qZd/Z0gmJkVjPE6npqCPeFgxuhQiLxwMBAIIER1Xa3uFikMO + FQ8IJkVid4qXoFEjGQAAAAABAOn/xwHDBTEAKQBwuwAOAAcAIgAEK0EhAAYADgAWAA4AJgAO + ADYADgBGAA4AVgAOAGYADgB2AA4AhgAOAJYADgCmAA4AtgAOAMYADgDWAA4A5gAOAPYADgAQ + XUEDAAYADgABcUEFABUADgAlAA4AAnEAuAAdL7gAAC8wMQEyFxQOBAcOAxUUFhc2MzIVFAYH + DgMjIi4CNRASNz4DAa4SAwgNDw4NAwUJBgMMCRUMDBIJDxYWHBUSFw4FLCYCIigjBTEYBDxZ + a2hZGyh/madQMFAVCgwLIg0UJh4SCzBiVgENAgHsDyooHAAAAAEAOf/LBPoE7gBbAQW4AFwv + uABdL7gABdy4AFwQuABV0LgAVS+5AEgAB/RBIQAGAEgAFgBIACYASAA2AEgARgBIAFYASABm + AEgAdgBIAIYASACWAEgApgBIALYASADGAEgA1gBIAOYASAD2AEgAEF1BAwAGAEgAAXFBBQAV + AEgAJQBIAAJxugARAFUASBESObgABRC5AD4ABPRBBQAaAD4AKgA+AAJxQSEACQA+ABkAPgAp + AD4AOQA+AEkAPgBZAD4AaQA+AHkAPgCJAD4AmQA+AKkAPgC5AD4AyQA+ANkAPgDpAD4A+QA+ + ABBdQQMACQA+AAFxuABIELgAS9C4AEsvALgALS+7AAAAAwBBAAQrMDEBMh4CFRQOAgcOBQc+ + Bzc2MzIWFRQOAgcOByMiLgI1ND4ENz4DNTQmIyIOBBUUFhUUDgIjIi4CNTQ+BAONO1IyFkR3 + oFsZS1hdVUQTH3SSpqaaeU8HDwwPDwkSHRQKYpW3vrWRXQYMHhoSLk1lcHQ0f6toLSsjOoSD + eV04BBQbGQUFFBQOOWSInKkE7iE2RSM8ipCRRBI3Q0pKRx4HGiAkJCEbEAIDDxMNJSQeBwMZ + IysrKSATEx8nEx9NV1xcVyZcmnxgIhcoHi86Ny4MAwcDCQ0JBRIdIhAQP0xPQSkAAAAAAQA5 + /98FEATZAGYBg7sAEQAFACoABCtBBQAaACoAKgAqAAJxQSEACQAqABkAKgApACoAOQAqAEkA + KgBZACoAaQAqAHkAKgCJACoAmQAqAKkAKgC5ACoAyQAqANkAKgDpACoA+QAqABBdQQMACQAq + AAFxuAARELgAaNwAuAAAL7gAAEVYuAAWLxu5ABYACD5ZuwBfAAMATQAEK7sADAADADEABCu4 + AAwQuAAJ0LgACS+4ABYQuQAgAAP0QSEABwAgABcAIAAnACAANwAgAEcAIABXACAAZwAgAHcA + IACHACAAlwAgAKcAIAC3ACAAxwAgANcAIADnACAA9wAgABBdQQMABwAgAAFxQQUAFgAgACYA + IAACcbgAFhC5ACUAA/RBIQAHACUAFwAlACcAJQA3ACUARwAlAFcAJQBnACUAdwAlAIcAJQCX + ACUApwAlALcAJQDHACUA1wAlAOcAJQD3ACUAEF1BAwAHACUAAXFBBQAWACUAJgAlAAJxugBI + AE0AXxESObgATRC5AFcAA/QwMQEyFRQOBAc2MjMyHgIVFA4CIyIuAjU0PgIzMh4CMzI+AjU0 + LgQjIg4CBw4BIyImNTQ2Nz4HNw4DIyIuAjU0PgIzMhYXHgIyMzI+Ajc+AQTnKT5mg4iEMxYo + FISsYydYrP+nV6eEURoqMhgXN1F2Vn3Lj00nQFVaWycmYGFYHxo3FQ4XEgsERGyIj4txTAlD + lZWJN2+FRRUZJzIaJk8aHjY2OiE8h31oHSlSBNkdFkFNU1JKHQI0Vm86VrSUXhwpLRENJCEX + HCEcOF16QitALR0RBgwWHhIPGRAOCxUHAik/UVVTRTAHEh0UCg0VGw4OJB8WFhEFBQMQGBsL + DxIAAAACACP/tgX4BPgAVwBsAEcAuAAAL7gAKy+7ABIAAwAcAAQrugANABwAEhESOboAMgAr + AAAREjm6AFUAKwAAERI5ugBYACsAABESOboAYQArAAAREjkwMQEyHgIVFAYHDgMHPgMzMh4C + FRQOAgcOAwcOAwcOAyMiNTQ+AjcOAwcOAyMiLgI1NDY3Pgc3PgEzMh4CFz4BAT4BNz4DPwEO + AwcOBQOTCx4cFA0IBQ0PDwdTm4VnIBEhGxERGR4MJnCLoVUGCQkMCQggIx4HDgQOGhdUqZyL + Nh0mGhMLCxELBhkiFEdYZmdjVUARFyILBBQWEwMIEP3TY/aACRANCQIGCCEpLBMQOEZOSkIE + +BcjKxQOIQ4JTGt8OQ4YEQoYISILCw4IAwEDDRIYDjKHi4ArJjgmEhsCMoTouA4eIB8OCA8M + CBsmKQ0aIQgFMEleZWVaSBUdLhAXGgomNv1kFjEXS4luSgwvDy40NRYSOkRKRDoAAAH/xQAp + BjsE1wB0ALK7ACkABgBHAAQrQQUAGgBHACoARwACcUEhAAkARwAZAEcAKQBHADkARwBJAEcA + WQBHAGkARwB5AEcAiQBHAJkARwCpAEcAuQBHAMkARwDZAEcA6QBHAPkARwAQXUEDAAkARwAB + cbgAKRC4AHbcALgAaC+7AEIAAQAwAAQruwAAAAEAEAAEK7sAJAADAEwABCu4ABAQuAAN0LgA + DS+6AB8ATAAkERI5ugBwABAAABESOTAxATIeAhceAxUUBiMiBgcOBSMiJicOAwc+AzMyHgIV + FA4EIyIuAjU0PgIzMhYXHgMzMiQ+ATU0LgIjIg4CBw4DIyIuAjU0Njc+BTc+ATMyHgIVFAYV + PgME4SdTSDcLEh8XDkM/P65qMnFvaFU8CwYLBg8lJiYRC0VsjFFffkseOWiTs89xZpllMwYJ + DAULCgoFLUddNrQBIMtsGz5lST2BeGYiEx8ZEwYGDAgFFxoJJS80LyUJDg8KBBgaEwIziqa7 + BLIFBggDBRMWFwkLBQIFAwkLDAoGAgIkTUg9FAcfIRkpRl00SYx+ak0rGy08IAobGBEiFAsW + EgxIdJRMITYnFRglLBQLHRsTFyElDhseFgc2T15eVh8xLQsTHBIDCAUKFA8KAAACADn/ywVU + BPwAOwBMAQe4AE0vuABOL7gACty4AE0QuAAe0LgAHi+5ADYAB/RBIQAGADYAFgA2ACYANgA2 + ADYARgA2AFYANgBmADYAdgA2AIYANgCWADYApgA2ALYANgDGADYA1gA2AOYANgD2ADYAEF1B + AwAGADYAAXFBBQAVADYAJQA2AAJxugBDAB4AChESObgAChC5AEoAB/RBBQAaAEoAKgBKAAJx + QSEACQBKABkASgApAEoAOQBKAEkASgBZAEoAaQBKAHkASgCJAEoAmQBKAKkASgC5AEoAyQBK + ANkASgDpAEoA+QBKABBdQQMACQBKAAFxALgAJy+4ABYvuwAHAAEAPAAEK7oAQwAWACcREjkw + MSU+BTMyFhUUDgQHFA4CIyImJy4DNTQ+BjMyFhUUDgIHDgUVFB4CMwEiDgQHPgU1NCYBeyJy + jqOookdHPEJxmK26WhQfKRUfMwxee0keN116hoh5YhwVEAQMFhIrfImHbEMeLTcaAvceaHuA + b1ANYa6Ud1QtIW1Okn9pSyorMTV3eHNhShIKEQ0HEBEEKEBXNECfrLClkGs+EhMHDA0SDSB5 + nbe8tk0jMB4OAcohPFJkcDsONUNNT0sgFB0AAAABADn/6QTdBOEARwA0ALgAFS+4AABFWLgA + KS8buQApAAg+WbsAEAABADsABCu4ABAQuAAA3LoANgA7ABAREjkwMRMiJjU0PgI3PgEzMh4C + MzI+AjMyFhUUDgIHDgUHDgMjIiY1NDY3PgU3DgMjIi4CJw4BBw4DbSAUHSYlCRpTLxZJdah1 + Xo5kOwsJBw8WHA0oW11dU0UYFSosLhkpKyknFkhYY2RfKBxRWVchIWlvZBwJLCUSHRkaAwQl + GQw+SkYVPz4RFREhKCEYEQwcICQTOpGgpZuHMitVQykcGg9MPCKBobWtmTQGCwcFBgoKBRRc + Ph8tHg8AAAMAXv/FBNkE5wA3AFAAbQGquwBmAAcADQAEK7sALAAHAEsABCtBIQAGAGYAFgBm + ACYAZgA2AGYARgBmAFYAZgBmAGYAdgBmAIYAZgCWAGYApgBmALYAZgDGAGYA1gBmAOYAZgD2 + AGYAEF1BAwAGAGYAAXFBBQAVAGYAJQBmAAJxugAAAA0AZhESObgAAC9BBQAaAEsAKgBLAAJx + QSEACQBLABkASwApAEsAOQBLAEkASwBZAEsAaQBLAHkASwCJAEsAmQBLAKkASwC5AEsAyQBL + ANkASwDpAEsA+QBLABBdQQMACQBLAAFxugBWAEsALBESObgAVi9BBQAaAFYAKgBWAAJxQSEA + CQBWABkAVgApAFYAOQBWAEkAVgBZAFYAaQBWAHkAVgCJAFYAmQBWAKkAVgC5AFYAyQBWANkA + VgDpAFYA+QBWABBdQQMACQBWAAFxuQAiAAf0ugAFAA0AIhESOboAJwANACIREjm4AAAQuQA/ + AAf0uAAiELgAb9wAuAAZL7sARAABADMABCu7AB8AAwBcAAQruwBpAAEACAAEK7gACBC4AAXQ + uAAFL7gAXBC4AFnQuABZLzAxNzQ+AjcOASMiLgI1ND4ENz4DMzIWFz4BMzIWFRQOAgceAxUU + DgQjIi4CAQ4FFRQeAjMyPgQ1NCYnLgEnPgM1NCYjIgYjIiYnDgUVFBYzMj4CuhwwQCQaMRcx + QicQIThLVVkrNIWDbx4ZJgsaPR81QDhgg0sxVkElL1Jwg5FJRX1eOAJpJWZsalM0IzdFIiZj + amZRMT4/GhpjWIthNBwUESgRERcBNo6Xk3NHHCsiXGlwwytUUEoiBQMaKTQaJU1NSkU9GR9C + NyQYEQsONDslXWdqMgkzTmY9QX1vXEMlGz1hAjIWPktXYWc2KTYgDBoxSFttP0hgHgwKRDJf + VkgbFAwFCg4NOU1bXFYiHCYUIzIAAgA5/8UEmgTJADwAWAE1uABZL7gAWi+4AFkQuAAA0LgA + AC+4AFoQuAAa3LgACtC4AAovuAAaELkALAAH9EEFABoALAAqACwAAnFBIQAJACwAGQAsACkA + LAA5ACwASQAsAFkALABpACwAeQAsAIkALACZACwAqQAsALkALADJACwA2QAsAOkALAD5ACwA + EF1BAwAJACwAAXG6ADMAGgAsERI5uABG0LgARi+4AAAQuQBNAAf0QSEABgBNABYATQAmAE0A + NgBNAEYATQBWAE0AZgBNAHYATQCGAE0AlgBNAKYATQC2AE0AxgBNANYATQDmAE0A9gBNABBd + QQMABgBNAAFxQQUAFQBNACUATQACcQC4AA0vuAAnL7sABwABAEYABCu7AFIAAwA6AAQrugAz + ACcADRESObgARhC4AEPQuABDLzAxEzQ+BDMyFhc+ATMyFhUUBgcOBRUUHgIVFAYHDgMjIi4C + NTQ+BDcOBSMiJiU+ATU0JjUuASMiDgQVFB4CMzI+BDlYkr7My1cWJBAaIBEcGh4aCRAPDQkF + Cw4LBAQGDRMeFhkcDQMFCQ0REgsYXnuQk447YG8DjBoQARMrGjSQmpd4ShsuPCEsa3NxY00C + 9CdhZGBLLQUFEAsUDxBgRBZri5yOcxxCRiQRDggTDhQpIhUkOkklElZ1iYuDNBAnKCUdETjv + FDwiBw4IAgUdLjs8ORQKCwYBDhceISIAAAIBYv/bAm0DxwAPACcAeroAAwAKAAMrQQUA2gAK + AOoACgACXUEbAAkACgAZAAoAKQAKADkACgBJAAoAWQAKAGkACgB5AAoAiQAKAJkACgCpAAoA + uQAKAMkACgANXbgAAxC4ABPQuAAKELgAG9C4ABsvALgAAC+4AABFWLgAGC8buQAYAAg+WTAx + ATIWFRQOAiMiNTQ2Nz4BEzIWFRQOAiMiJjU0PgI3PgM3PgECLxYoKz1CF0QnMhk+FxYoKTpD + GR0vBQ4WEQ8PDREPESADxyYuIkU4JD4uVCoVGP0xJi4gRjwnKiAQJSYjDw0HAgQLDBUAAAAC + AJ7+kwKBA8cAJwA3ANS6ACsAIwADK0EFANoAIwDqACMAAl1BGwAJACMAGQAjACkAIwA5ACMA + SQAjAFkAIwBpACMAeQAjAIkAIwCZACMAqQAjALkAIwDJACMADV26ABkAIwArERI5uAAZL0EF + ABoAGQAqABkAAnFBIQAJABkAGQAZACkAGQA5ABkASQAZAFkAGQBpABkAeQAZAIkAGQCZABkA + qQAZALkAGQDJABkA2QAZAOkAGQD5ABkAEF1BAwAJABkAAXG5AAUABvS4ACMQuAAy0LgAMi8A + uAAoL7gADC8wMQEyHgIVFA4EIyImNTQ2Nz4FNTQmIyIOAiMiNTQ+AhMyFhUUDgIjIjU0Njc+ + AQHjFjcwITBOYWFYHhcWFhcPPEpOQCkgDggbHh8MIRMiMmQWJys8QhdEJjIaPgFYESxNOyhr + cW9XNiAWFhcQCjVJWFpWJCclDQ8NHw8gGxICbyYuIkU4JD4tVSoVGAAAAAEAOQArBJEEnAA0 + AB0AuAAAL7sAFAABAB4ABCu4ABQQuAAX0LgAFy8wMQEyFhUUDgIHDgMHHgUzMjYzMhUUDgIj + Ii4EJy4BNTQ2Nz4DNz4DBHkLDQ4XHhGJ4sq/Zg5eiqmzsEwRHQsPISssC2KlkoaGjVEiGCMf + buPn5nEbIxgRBJwQDwsbHRwMXYtyZzoOQlVbTDEGDRElHhQhOUxXXS0TKBkfIxRGfXt9RRAY + EAgAAgBRAUQEogP6ACEAUQALALgAQi+4AAcvMDEBDgUjIi4CNTQ2Nz4FPwE+ATMyFhUUDgIT + Ig4EBw4FIyIuAjU0PgIzMj4CNz4BMzIeAhUUDgIjIiY1NCYDNShuen9wWRgVKiEUHikVYH+T + kIEulgYNBgoRK0VX7A0+UFpURRMTSFhgVkIPFxsNAwEIEQ8PTm+JS5HSSyUwHAoMDw8DBg8I + AbQMGRkXEQoGER0XExsMBg4PEhQYDSsCAgsOEisqJgHgCxAUExAEBBATFBEKDBQWCwsSDQcT + HSIPHBcJEhkQEBcPBwcPCwYAAAEAIwBWBH0EkQA0ACEAuAAAL7gAAy+7ACUAAQAbAAQruAAb + ELgAHtC4AB4vMDE3DgEjIiY1ND4CMzIXPgM3LgcjIgYjIjU0PgIzMh4CFx4BFRQGBw4Dsggm + FB0wFyImDhUDYNXY0V0KP1xxenxxXh8RHQsOFic1H0KqyeJ6IhccHWjZ5e9eAwUQFw8iHBMU + GWSBlUoKKzlCQj4vHAcNGCccD0RuiEMTJxkeOBdSlYBpAAAAAAIATv/HA7YFMQBPAGABPbsA + PAAGAEkABCu7AAUABQAwAAQrugBTAFsAAytBBQAaADAAKgAwAAJxQSEACQAwABkAMAApADAA + OQAwAEkAMABZADAAaQAwAHkAMACJADAAmQAwAKkAMAC5ADAAyQAwANkAMADpADAA+QAwABBd + QQMACQAwAAFxQSEABgA8ABYAPAAmADwANgA8AEYAPABWADwAZgA8AHYAPACGADwAlgA8AKYA + PAC2ADwAxgA8ANYAPADmADwA9gA8ABBdQQMABgA8AAFxQQUAFQA8ACUAPAACcbgAPBC4AD/Q + uAA/L0EbAAYAUwAWAFMAJgBTADYAUwBGAFMAVgBTAGYAUwB2AFMAhgBTAJYAUwCmAFMAtgBT + AMYAUwANXUEFANUAUwDlAFMAAl24AAUQuABi3AC4AFgvuwAAAAMANQAEKzAxATIeAhUUDgIH + DgMHMj4CNzYzMhYVFAYHDgMjIi4CNTQ+Ajc+AzU0LgIjIg4EFRQWFRQOAiMiLgI1ND4EAzIW + FRQOAiMiJjU0Njc+AQMMJT8tGT9wm1wTKSEWARhRVkgPEAsQDygoFFNbURIMJCAXByhYUFOJ + YTYGDhcSOoeIfmE6BBQbGQQGDQsHOWSInKmHFigrPUIXIiInMho9BTEdMEAjPImPj0IOICEh + DwsPDgMDDxMaMg4HDQsGBhEdGBMyQlY2OHdvYSIMFxILHzA7OC8LBAYECQ0JBBIcIhAQQEtP + QSn7rCYuIkU4Ix0gL1MqFhcAAAIAOf8tBpMFaABvAIMB67sATAAEAGcABCu7AIEABwAgAAQr + uwA2AAUAEQAEK7sABQAFAEAABCtBBQAaABEAKgARAAJxQSEACQARABkAEQApABEAOQARAEkA + EQBZABEAaQARAHkAEQCJABEAmQARAKkAEQC5ABEAyQARANkAEQDpABEA+QARABBdQQMACQAR + AAFxuAARELgAFNC4ABQvQQUAGgBAACoAQAACcUEhAAkAQAAZAEAAKQBAADkAQABJAEAAWQBA + AGkAQAB5AEAAiQBAAJkAQACpAEAAuQBAAMkAQADZAEAA6QBAAPkAQAAQXUEDAAkAQAABcUEh + AAYATAAWAEwAJgBMADYATABGAEwAVgBMAGYATAB2AEwAhgBMAJYATACmAEwAtgBMAMYATADW + AEwA5gBMAPYATAAQXUEDAAYATAABcUEFABUATAAlAEwAAnG4ABEQuAB30LgAdy+6AHoAEQA2 + ERI5QSEABgCBABYAgQAmAIEANgCBAEYAgQBWAIEAZgCBAHYAgQCGAIEAlgCBAKYAgQC2AIEA + xgCBANYAgQDmAIEA9gCBABBdQQMABgCBAAFxQQUAFQCBACUAgQACcbgABRC4AIXcALsATwAC + AGIABCu7AAAAAwBDAAQruwBwAAEAGwAEK7gAGxC4AFjQuABYLzAxATIeAhUUDgQjIi4CNTQ2 + Nw4FIyIuAjU0PgQ3PgEzMh4CFRQOBBUUFhc+BTU0JiMiDgYVFBYzMj4ENzYzMhUUBgcOAyMi + LgI1ND4GATI+BDc+ATcOBRUUFgUhcJBSIBwyR1hlNyAuHA0BAiBYaXV4dzY3TjIYUIizxs5e + BgwGDBQPCQUICQgFCQsiR0M8LRqJkz+ktsC1oXhGlYg7eHJoV0ITDAgOFx0gcJGqWGGXaTdJ + f6zE087A/WE0dXh1Z1QaBQsGP5qflXVGHwVoRnKTTkinqJt4SCA5UDAKHxMiTEtENB8aLTkg + L3h/gXFbGiAoDxkhEgk2UGJoZyw1Sw4TSGJ4hpFJgo4wWH2as8XUbYN9Fyc0OTobEB8WPhoc + T0gyLF+Wam3c0sOqjGU3+6ggNUZLSyE2dDYTRFdkZmAoHRUAAAIAI/9tBUIFsABmAHUANQC4 + AAAvuAArL7sAWAADAFAABCu4AFAQuABN0LgATS+6AGwAKwAAERI5ugBxACsAABESOTAxATIe + AhUUDgIVFBYXHgEXPgM3NjMyFRQOAgceAxceAxUUBiMiJicuBScOAwcOAQcOAyMiLgI1NDY3 + PgE3DgEjIi4CNTQ2Nz4BNz4DNz4FEy4DJw4DBz4DAvYHICEaERMRGQ4XOSA5W1NRLwkGEkFo + gkAXMDIyGgsbFxAeFyI/FBAmJygkIAw4a3aKVhgzIg4QDA0KCx0aEhcWBRkTFh4KGCcdEBwu + LU8nH0M/OBMKJjA0MSlgFCcjHgsfTE5HGStwdGsFsAQNGRUJHCYsGTJzNl3acw4YFhcNAw0L + Ljc3E06XiHQrFRwVDwgPEw0XEk9ndnVqJxIdHBwQPI1eJjYkERspMBUpSzYMOCkCAhMcIA0U + EQICDAZAiYFvJhRacHhiQPySSZeRhjhCq7ClPQcUFhYAAAACAKT/mAY7BS8AUgCPAeW7ABwA + BwAoAAQruwAFAAcAfgAEK7sAEgAFAGQABCu4ACgQuAAl0LgAJS+6AAoAJQASERI5uAAoELgA + LdC4ABwQuQA0AAX0ugBOACUAEhESObgAHBC4AFPQuABTL7gAHBC4AFjQuABYL0EFABoAZAAq + AGQAAnFBIQAJAGQAGQBkACkAZAA5AGQASQBkAFkAZABpAGQAeQBkAIkAZACZAGQAqQBkALkA + ZADJAGQA2QBkAOkAZAD5AGQAEF1BAwAJAGQAAXFBBQAaAH4AKgB+AAJxQSEACQB+ABkAfgAp + AH4AOQB+AEkAfgBZAH4AaQB+AHkAfgCJAH4AmQB+AKkAfgC5AH4AyQB+ANkAfgDpAH4A+QB+ + ABBdQQMACQB+AAFxuAAcELgAi9C4AIsvuAASELgAkdwAuABGL7gAIi+4AABFWLgAGS8buQAZ + AAg+WbsAAAADAIMABCu7AA0AAgBnAAQrugAKAGcADRESObgAGRC5AF0AA/RBIQAHAF0AFwBd + ACcAXQA3AF0ARwBdAFcAXQBnAF0AdwBdAIcAXQCXAF0ApwBdALcAXQDHAF0A1wBdAOcAXQD3 + AF0AEF1BAwAHAF0AAXFBBQAWAF0AJgBdAAJxugAcABkAXRESOboATgCDAAAREjkwMQEyHgIV + FA4CBz4BMzIeAhUUDgQjIiYnFRQOAiMiJjU0NjUmNTQ2Nz4FNzwBNy4DNTQ+Ajc+AzMyHgIV + FAYVPgMBFB4CFx4DMzI+BDU0JiMiDgIHDgMjIiY1NDY3PgU1NC4CIyIOAgcOAQcOAwQlR2I8 + GyE6Ty0+ezRFYj0cT4q92u94OoU7HSQjBgoPBxsODQECAwQFBgMCDyMeFAkaLiYHEhEQBwsd + GhICTqKinf2DAQICAQ8rQFtAa9XBpXlFcWYpc4KGOzZYSDYTJhsQI0Wal4lpPh4sLxImg5ic + QDJAFwUGBAIFBg8gMCIjRUI/Hw4LIzpNK02mn5BtQA0RDiApGAkOFRBVNB0nFx0JImZ4hIBy + LAULBgYUFxgJDBQWGxQwVkAlGCUvFwsTCR8wIRH9RB1ZaXA0DBgVDTpge4J+MzQ6ChMbEQ8f + GQ8hIB8gCRI1PUE9MhEKDAYBER8sGxUlDyxhY18AAAEAOf/PBXwFFAA+AN67ABYABQA1AAQr + QSEABgAWABYAFgAmABYANgAWAEYAFgBWABYAZgAWAHYAFgCGABYAlgAWAKYAFgC2ABYAxgAW + ANYAFgDmABYA9gAWABBdQQMABgAWAAFxQQUAFQAWACUAFgACcQC4AAAvuAAARVi4ADAvG7kA + MAAIPlm5ABsAAfRBIQAHABsAFwAbACcAGwA3ABsARwAbAFcAGwBnABsAdwAbAIcAGwCXABsA + pwAbALcAGwDHABsA1wAbAOcAGwD3ABsAEF1BAwAHABsAAXFBBQAWABsAJgAbAAJxMDEBMh4C + FRQOAiMiJicOBxUUHgIzMj4ENzYzMhUOAQcOBSMiLgI1ND4CNz4DBEgPIx4UHy83FxIzGRBV + dYuNg2Y9CxwwJjulvc7HuUoWDgwBDxJHrb/Jw7dNRFYyEjx1rHBst5NsBRQYIiQMDSglGwUK + CDxeeIiRkYk7Gy0fESZDW2hxOBAMCB4SR4Z3Y0coIDxUM1S1vsVkYIxaLAAAAgCH/7IFmgVc + ADsAUwDkugBDAC0AAyu7AB8ABQBKAAQrQRsABgBDABYAQwAmAEMANgBDAEYAQwBWAEMAZgBD + AHYAQwCGAEMAlgBDAKYAQwC2AEMAxgBDAA1dQQUA1QBDAOUAQwACXbgAQxC5ADcAB/RBBQAa + AEoAKgBKAAJxQSEACQBKABkASgApAEoAOQBKAEkASgBZAEoAaQBKAHkASgCJAEoAmQBKAKkA + SgC5AEoAyQBKANkASgDpAEoA+QBKABBdQQMACQBKAAFxuAAfELgAVdwAuAAoL7gADS+7ABgA + AwBPAAQrugBDACgADRESOTAxEyIuAjU0Ny4BNTQ2MzIeAh8BPgMzMh4EFRQOBiMiLgI1ND4C + Ny4DJy4DNx4FFz4FNTQuAiMiDgLPChINCCMEAggOCx0cFQMIKFZQQhVt0bmbcD5MgqzDzMGq + PxUjGQ8NIjksBAUEAwEFDxAQcAcRDw4LBgFj2NK+kFVbq/abQ2xWQgPPCBcnICIaKEEmJTcQ + HSkaSAoMCAMkQ190hkk2fIKCdmdMKxskJgwWDwMBCCJJRj4VT6ilmoJIpa2snokyHWB2gn5w + Ki9yZEMJDxQAAAACANP/5wXvBUgAXQCNAOu7ABwABwBNAAQruAAcELgAENC4ABAvuAAcELgA + FdC4ABUvuABNELgANNC4ADQvuAAcELkAQAAG9LgAOdC4ADkvuABNELgARdC4AEUvuABNELgA + SNC4AEgvuABNELgAStC4AEovALgAUC+4AABFWLgAMS8buQAxAAg+WbsAAAABAAkABCu4ADEQ + uQAgAAH0QSEABwAgABcAIAAnACAANwAgAEcAIABXACAAZwAgAHcAIACHACAAlwAgAKcAIAC3 + ACAAxwAgANcAIADnACAA9wAgABBdQQMABwAgAAFxQQUAFgAgACYAIAACcTAxATIeAhUUBisB + Ig4EBx4DFRQGFAYUBh0BFBYzMiwCNzYzMhYVFAcGDAIjIiY1ND4CNTQ+BDU0LgInLgE1NDcu + ATU0NjMyHgIXHgEXNz4DASIOBAcOBSMiLgI1ND4CMzI+Ajc+ATMyHgIVFA4CIyImNTQmA6gw + Yk8zHBGbKW56gHdpJQMEAwIBAgEcIHgBEwEXAQ10DQkLCRBx/vH+2f7Hm0tCCAkIAQECAQEC + AwUDDAoQAgMQCgYVFhQFAwUCHDSZpJoBrw0+UFpURRMTSFhgVkIPFxsNAwEIEQ8PTm+JS5DT + SyUwHAoMDw8DBg8IBPgNFyASEwoKEBQTEAUgQDszEw5MYm9kThHKJBQpSWM6BgwIEgtTglgu + QUIQKS0uFg86SlVRSRofWWhwNQYYERcQEzcRNS0SGyEOChgOBwkTDwr+ewsQFBMQBAQQExQR + CgwUFgsLEg0HFB0iDhwXCRIZEBAXDwcHDwsGAAABAPb/UgUSBScAXgC2uwATAAUAKwAEK0Eh + AAYAEwAWABMAJgATADYAEwBGABMAVgATAGYAEwB2ABMAhgATAJYAEwCmABMAtgATAMYAEwDW + ABMA5gATAPYAEwAQXUEDAAYAEwABcUEFABUAEwAlABMAAnG4ABMQuAAO0LgADi+4ACsQuAAm + 0LgAJi+4ABMQuABR0LgAUS8AuAAwL7gAPC+4AB8vugAOAB8AMBESObgAPBC5AEkAA/S6AFEA + HwAwERI5MDEBMhYVFAYHBgQjIi4CJw4BHAEVFB4EFRQOAiMiLgQ1PAE+ATc+AzMyHgIXPgUz + Mh4CFRQGIyI0LgEjIg4CBw4BBz4FNz4FBPYMEDsti/7blCFMSDwRAQEDBgUGAw8UFQYJEBAN + CQYDBAUBBAkOCwcTExEGImBsbl5FDS5KNRwUDwgEERlUr6aUOQUGAhE+TVZSSBoeW2dqWT8D + ZAcJDiMVQlUBBgwMKkFASDBPdVc9LiQRGiYaDAkgPGaWanLb2d1zFjQtHQ4WHA4IEA8NCgYe + LTUYGRQVGBUOFRkKb8JeChEQDQwKBAUPEREOCQABADn+JQUpBTcAZwGvuwAwAAUADwAEK7sA + VgAEAGUABCtBBQAaAGUAKgBlAAJxQSEACQBlABkAZQApAGUAOQBlAEkAZQBZAGUAaQBlAHkA + ZQCJAGUAmQBlAKkAZQC5AGUAyQBlANkAZQDpAGUA+QBlABBdQQMACQBlAAFxuABlELgAANC4 + AAAvugADAGUAVhESObgAVhC5AD4ABfS5AFEABvS4AB/QuAAfL0EhAAYAMAAWADAAJgAwADYA + MABGADAAVgAwAGYAMAB2ADAAhgAwAJYAMACmADAAtgAwAMYAMADWADAA5gAwAPYAMAAQXUED + AAYAMAABcUEFABUAMAAlADAAAnG4AFYQuABb0LgAWy+4AFYQuABp3AC4AGAvuAAARVi4AAov + G7kACgAIPlm7ABoAAwAnAAQrugBOAEUAAyu6AAMARQBOERI5uAAKELkANQAC9EEhAAcANQAX + ADUAJwA1ADcANQBHADUAVwA1AGcANQB3ADUAhwA1AJcANQCnADUAtwA1AMcANQDXADUA5wA1 + APcANQAQXUEDAAcANQABcUEFABYANQAmADUAAnG6AD4ARQBOERI5MDElPgE3DgUjIi4CNTQ+ + CDMyHgIVFAYjIi4CIyIOBhUUHgIzMj4GNQ4FIyI1ND4EMzIWFRQOAhUUHgIVFA4CIyIuAjU0 + NgSTBAkGNYmbpaCWPTBaRysvVHOGlpmXi3guFiwjFggNDAsNFRYujKa3sKB5RxUmNCA7jZaZ + jXtcNBRATFVTSx0tNldsbWMhMDINEQ0DBAMQGB0NDRILBQePLGQ1NWNXSDMdESxMOzB/kZ6g + nIx4VzEOHS0eDiAJCwlGd56wtqmRMiAjEQQdMkNOVVRPIhY1NTInFy8VQ01NPyctMxdinNeL + VGxLNBsQJB4UMlVwPk+hAAAAAAEAVP7uBV4FfwB8AOK6AFUAeAADK7sAOwAEAE0ABCtBGwAG + AFUAFgBVACYAVQA2AFUARgBVAFYAVQBmAFUAdgBVAIYAVQCWAFUApgBVALYAVQDGAFUADV1B + BQDVAFUA5QBVAAJduABVELgAD9C4AA8vuABNELgAFdC4ABUvuAA7ELgAKtC4ACovuAA7ELgA + LdC4AE0QuABQ0LgAUC+4AFUQuABd0LgAXS+4AFUQuQBuAAf0uABx0LgAcS+4ADsQuAB+3AC4 + AGIvuAAARVi4ACAvG7kAIAAOPlm6AA8AYgAgERI5ugBxAGIAIBESOTAxAT4DMzIeAhUUDgIH + PgM/ATU0PgI3PgMzMh4CFRQGBwYVFBYdAT4DMzIWFRQOAgcRFA4CIyImNTQ3PgU1NCY1DgMH + DgMHMhYVFA4CIyIuAjU0PgQ3PgE3Bw4BIyImNTQ+AgEOEhsXFAsHGxsTDRQVCDR8g4U+VgUK + DQkMGhgVBwYNCwcYFQMFM0UtGQgvITBOZDQJEh0UNDIvAgMDAgEBAmWZhoNPBgcFAgEUDxcj + KRILDwoFAgMEBAMBAQQDRBkqDgwNHDFEAtWl4Yk7ERshERhZd5BRDh4cGwsPpCZWTkAQFh4R + BxMaHAkTEAYOHSZuQX8GBwQBCA4OFxUTCf2wHzYpFxsSHBUKNUlVVUwbL3A7FCMkJhdQpqKY + QxwXH1FJMhwqLxIMXYGViWwZFCwWFiMtJSsbKyMdAAEA9f+PAZ0FZAAiAI67ACAABAAQAAQr + QSEABgAgABYAIAAmACAANgAgAEYAIABWACAAZgAgAHYAIACGACAAlgAgAKYAIAC2ACAAxgAg + ANYAIADmACAA9gAgABBdQQMABgAgAAFxQQUAFQAgACUAIAACcbgAIBC4AADQuAAAL7gAEBC5 + ABgAB/S4AAPQuAADLwC4ABUvuAALLzAxJTIWFRQGBw4DIyIuAjUQGgE2MzIWFRQGBw4DFRQW + AWoZFg8NBxYaGgsOEgkDDBUbDjAuDRcFBwQCAcE2JiJIGg8dFw8WOGBKAVIB2QEqiE1LI188 + QZylpUlFcgAAAf/J/3EDMQVmADQAfrsADgAEACgABCtBBQAaACgAKgAoAAJxQSEACQAoABkA + KAApACgAOQAoAEkAKABZACgAaQAoAHkAKACJACgAmQAoAKkAKAC5ACgAyQAoANkAKADpACgA + +QAoABBdQQMACQAoAAFxuAAOELgANtwAuAAAL7sAIwADABMABCswMQEyHgIXHgcVFA4CIyIu + BDU0NjMyFhceATMyPgI1NC4ENTQmNTQ2ArgLGxsWBQMFBQUEAwMBH0VxUk+SgWpLKiARECoS + adiDLEMuFwQGCAYEAQgFZhkpNBsPU3iSmpiFZxxio3dCJz9QU0wdHSUYFXqEH0d0VV/OyLmV + ZxIRHg0gJQAAAAABAH//iwXFBRkAbQDWuwBkAAYATQAEK0EhAAYAZAAWAGQAJgBkADYAZABG + AGQAVgBkAGYAZAB2AGQAhgBkAJYAZACmAGQAtgBkAMYAZADWAGQA5gBkAPYAZAAQXUEDAAYA + ZAABcUEFABUAZAAlAGQAAnG4AGQQuAAw0LgAZBC4ADbQuAA2L7gATRC4AELQuABCL7gATRC4 + AEbQuABGL7gATRC4AFLQuABSLwC4AAAvuABXL7gAOy+7ABoAAwAkAAQruAAaELgAHdC4AB0v + ugAwADsAVxESOboAZAA7AFcREjkwMQEyFRQOAgcOAwcOAwceBzMyNjMyFRQOAiMiLgQnLgMn + FRQWFBYVFA4CIyIuBD0BPAEvAS4BNTQ2Ny4DNTQ+AjMyHgIXHgEVFAcOARU+Azc+AwU9GQoU + GxFFs8LEVxg/PjMLCk10k6OropI5ER4KDyg1MwwaS1hfXVYhH2yCjD4BAQUNGRQLDwsGAwEC + PCIXOzgBAQEBBQwVDw8YExEJCAYbAwVbxdnvhRsjGBAFFB4LHyEhDTRlXVMkChwdGgkKJzI6 + OjQpGAcNESwoHAkPFBYXCwooNTocCFqPcVUgIDcoFyQ7TlVVJlYZa0cfESoZIzIbRoZxURAg + KxkLFiUxHBcrETEXDmdEJExfeVAQGA8IAAEApv+yBNYFSgA6AJS7ACEABwAAAAQrQSEABgAh + ABYAIQAmACEANgAhAEYAIQBWACEAZgAhAHYAIQCGACEAlgAhAKYAIQC2ACEAxgAhANYAIQDm + ACEA9gAhABBdQQMABgAhAAFxQQUAFQAhACUAIQACcbgAIRC5AAUABfS6AA4AAAAhERI5uAAO + L7kAGAAH9AC4ABEvuwAkAAMANgAEKzAxNzQ+Ajc+BzU0NjMyHgIXFhUUBw4FBx4BMzI+BDc2 + MzIVFAcOAgQjIi4Cpg8VGQkCBAUFBAQCAhkYDBMSEwwcLAMICAcHBQEPIA4zfoyTjoM2Ew0Q + GD2z3f7/jDxLKQ5UHi4gEwIvgZSem450Tw9FUxAdKBg2OUpBG4CowbqjNgUDEB0pMTgeCg4S + GUF0VzQaLTsAAQDR/0YFewW8AHwA6rsASgAHAFQABCu7ABIABwAhAAQruAASELgAGdC4ABkv + QQUAGgAhACoAIQACcUEhAAkAIQAZACEAKQAhADkAIQBJACEAWQAhAGkAIQB5ACEAiQAhAJkA + IQCpACEAuQAhAMkAIQDZACEA6QAhAPkAIQAQXUEDAAkAIQABcbgAEhC5ACsABPS4ACbQuAAm + L7gAKxC4ADDQuAAwL7oAMQAhABIREjm4AEoQuABE0LgARC+4AEoQuQBbAAX0uAASELgAftwA + uAAeL7gAAy+7AHAAAwA5AAQrugAxAB4AAxESOboARAAeAAMREjkwMQE+ATMyHgIVFAYHFB4E + FRQOBBUUDgIjIiY1ND4CNz4DNTQuAj0BDgEHDgMjIiYnLgMnLgEnDgMVERQOAiMiLgI1ND4E + Ny4BNTQ+AjMyFhceAxceAzMyPgI3PgM3PgEFJQgRDgYQDwoZFAIEBAQCAQMCAwEdJyYJEQ8F + BggDAwUDAQICAilbJh1DQzwVJUcZG0RGQxwRJBQCBAMCBwwSDAwhHhUJDxMSEQYUFwwVGg8a + GQ4FIC01GxtAPzYRIUlGPxcRPEVGGgsVBY8TGiAsLg0cTyITbJGkl3gcHFppb2JMERorIBEo + Hw9TZGAcIVReZjU/fnNkJTs/gTQpSDcgGAsMKzc+IBM4IEail3wg/kQXHhEGGzJFKgx3sdjZ + yEktShIYLyUXOzsWSFJWIyM6KhclNz4YE0pZWiMwQgAAAQDW/4cFDAWwAG0AP7sAOgAHAEMA + BCu4ADoQuQBIAAX0uABDELgATdC4AE0vALgAAC+4AD0vuwBhAAMAKgAEK7oAJwAqAGEREjkw + MQEyHgIVFA4EBw4HBx4BFRQOAiMiLgI1ND4CNw4BIyIuBCcuAyMiBhURFAYjIiYnLgE1ND4C + NS4DNTQ+AjMyHgIXHgMXHgMzMjY3PgU3PgEEywcXFA8FCQsLCgMDBwgJCQkHBwIPFg4WHhAT + GA4FAgUIBhY4KyNYXFxOPA4VKSUdBxALCxUXJQoOCgoMCg4SCgQCBw4LDx0bGgsLLE11VVRv + TDIXHCIMCBEPDgwKBAURBbASGx8MCDBCTk5IGxdffpWYk3xdFQkbEQwfGxItSV0xNUxMWkQX + IzJPYFtLExowJBUvI/v+FhEiMjyRVV/W5/V9IjgxLBYMFxILFyo4ISJUaYJPTlgqCSEcWo5x + XVNPLThBAAIAOf/4BR8E+gAgAEABYbgAQS+4AEIvuAAN3LgAQRC4ABnQuAAZL7kANAAG9EEh + AAYANAAWADQAJgA0ADYANABGADQAVgA0AGYANAB2ADQAhgA0AJYANACmADQAtgA0AMYANADW + ADQA5gA0APYANAAQXUEDAAYANAABcUEFABUANAAlADQAAnG4AA0QuQA+AAb0QQUAGgA+ACoA + PgACcUEhAAkAPgAZAD4AKQA+ADkAPgBJAD4AWQA+AGkAPgB5AD4AiQA+AJkAPgCpAD4AuQA+ + AMkAPgDZAD4A6QA+APkAPgAQXUEDAAkAPgABcQC4AABFWLgAFC8buQAUAAg+WbsAAAADACEA + BCu4ABQQuQA3AAL0QSEABwA3ABcANwAnADcANwA3AEcANwBXADcAZwA3AHcANwCHADcAlwA3 + AKcANwC3ADcAxwA3ANcANwDnADcA9wA3ABBdQQMABwA3AAFxQQUAFgA3ACYANwACcTAxATIW + FRQGFRQXHgMVFA4EIyIuAjU0Ejc+AxciDgIHDgEjIiYjIgYHDgMVFBYzMj4ENTQmBA42RQgK + GjUqG1KOv9flbjdnTzDByVGwoYQXFU9XURkWNhUFCwUTKR1Shl40PlFQxMm9lFlZBPokKgsS + CAgECiY+WT1fz8ezh1AcQWtQiwFZvEt6Vi+9EB8vHhopAx0YRJmalUBUWEuAp7m+Vk1dAAAC + AE7/WAUrBRIAMgBKAO64AEsvuABML7gACty4AEsQuAAm0LgAJi+5ABQAB/S4ABnQuAAZL7gA + JhC4ACrQuAAUELgAONC4ADgvuAAKELkAQgAG9EEFABoAQgAqAEIAAnFBIQAJAEIAGQBCACkA + QgA5AEIASQBCAFkAQgBpAEIAeQBCAIkAQgCZAEIAqQBCALkAQgDJAEIA2QBCAOkAQgD5AEIA + EF1BAwAJAEIAAXEAuAAeL7sAAAACAEUABCu7ADsAAwARAAQruABFELkABQAB9LgAERC4ABTQ + uAAUL7gAABC5AEoAA/S4ACvQuAArL7gAOxC4ADjQuAA4LzAxEzI+AjMyHgIVFA4EIyoBJx4D + FRQOAiMiLgQ1ESY1NDcRLgM1NDYXHgMXHgEzMj4ENTQmIyIOAgeBfeHLt1NskFckSX+pwc5k + FCsVAgQDAREbIhAKDgoFAwEXFx87Lx0a9gIEBAQDEikZW7mqlG0/b3dQoKKiUQThDxMPDyI3 + KUSHfGtQLQJgv6F2FipCLRcNJkd2qncBGBknMQgBZAMWHB0KFhGoDz1XajwCAihBVFhWIhYZ + ExgYBQAAAAIAOf7dBiEFPQA9AHIBC7gAcy+4AHQvuAAF3LgAcxC4ACzQuAAsL7gABRC5AEoA + BfRBBQAaAEoAKgBKAAJxQSEACQBKABkASgApAEoAOQBKAEkASgBZAEoAaQBKAHkASgCJAEoA + mQBKAKkASgC5AEoAyQBKANkASgDpAEoA+QBKABBdQQMACQBKAAFxuAAsELkAYwAE9EEhAAYA + YwAWAGMAJgBjADYAYwBGAGMAVgBjAGYAYwB2AGMAhgBjAJYAYwCmAGMAtgBjAMYAYwDWAGMA + 5gBjAPYAYwAQXUEDAAYAYwABcUEFABUAYwAlAGMAAnEAuAAbL7sAAAABAE0ABCu7AGYAAQAn + AAQruABNELkANQAD9LgAVdwwMQEyHgIVFA4EBx4DFx4DFRQOAiMiLgQnDgMjIi4CNTQ+BjMy + FhUUBhUUFgEyHgIXPgU1NCYjIg4CBw4BIyIuAiMiDgYVFBYzMj4CNy4BNTQ+AgWPFjMsHS5T + dIqdUy1dUkITHDcsGxMeJRMQP1FcWlIeTJmTiT08UjMWU4270NrLsD4cLgsL/YkLGRkYC06W + hnFSLkA7HVdaURcuPBQTDwUDBwZBZHt/eV45OD8ub3yERA4ZAgkQBOMaMUgtPIWJi4Z+OD5w + XEUTHCwiGAcOGhUNM1Nqb2sqLUo0HBoySC1bw8K8p45nOhIUCxUIBQf8+BEaIRA1dXp6c2cq + KCYXISQNGikTFhMrTGd3gYB7NEIzGzFFKRk2DgkWEw0AAAACAHf/PQUbBUgAWABsAXe7AD8A + BwBUAAQruwAYAAUAYwAEK0EhAAYAPwAWAD8AJgA/ADYAPwBGAD8AVgA/AGYAPwB2AD8AhgA/ + AJYAPwCmAD8AtgA/AMYAPwDWAD8A5gA/APYAPwAQXUEDAAYAPwABcUEFABUAPwAlAD8AAnG4 + AD8QuQBRAAf0uAAA0LgAAC+4AFEQuAAD0LgAAy+4AFEQuAAI0LgACC+6AA4AVAA/ERI5uAA/ + ELgAJNC4ACQvuAA/ELgAJ9C4ACcvuABRELgATtC4AE4vuAA/ELgAXtC4AF4vQQUAGgBjACoA + YwACcUEhAAkAYwAZAGMAKQBjADkAYwBJAGMAWQBjAGkAYwB5AGMAiQBjAJkAYwCpAGMAuQBj + AMkAYwDZAGMA6QBjAPkAYwAQXUEDAAkAYwABcbgAGBC4AG7cALgACy+4ABMvuABJL7sALQAD + ADwABCu4ABMQuQBoAAP0ugAOABMAaBESOboAPwA8AC0REjm6AF4ASQALERI5MDETNDY1NC4C + NTQ2MzIWFz4DMzIeAhUUDgIHDgUHFhQdAR4DMzI+AjMyFRQGBw4DIyImJx4DFRQOAiMiLgIn + LgE1LgE1ND4CEx4DFzYkPgE1NC4CIyIOAvYBAwUDChITFwkbWW9+QU+RbkIJGSohLG14fXdr + KgIxaHqWYFCMa0QIFxkWGFt2ikaF6FkCBwYFEBkeDQ0TDggBAgRCNxwnLGwCBQUEAqgBAa5Z + N1JgKUCAcl8CnhcwGFWqj2UQKh46MxAkHxQiQmFADSImKRUcOzw7NS8SGzEUDCw9JhEeJR4Z + ER8SFC4oG0A7P4t5WQwSKCEWPFhjJje0ZzxLGwwXFhEBnSBVX2QwSHtiSBQYJhsPECAxAAAA + AAEATv/bBZEFRgBaAX24AFsvuABcL7gAWxC4ACzQuAAsL7gAXBC4ACDcugAWACwAIBESObgA + LBC5ADIABfRBIQAGADIAFgAyACYAMgA2ADIARgAyAFYAMgBmADIAdgAyAIYAMgCWADIApgAy + ALYAMgDGADIA1gAyAOYAMgD2ADIAEF1BAwAGADIAAXFBBQAVADIAJQAyAAJxuAAgELkAPgAF + 9EEFABoAPgAqAD4AAnFBIQAJAD4AGQA+ACkAPgA5AD4ASQA+AFkAPgBpAD4AeQA+AIkAPgCZ + AD4AqQA+ALkAPgDJAD4A2QA+AOkAPgD5AD4AEF1BAwAJAD4AAXEAuAAARVi4ACcvG7kAJwAI + Plm7AAAAAQANAAQruwAbAAIAQwAEK7gAJxC5ADcAAfRBIQAHADcAFwA3ACcANwA3ADcARwA3 + AFcANwBnADcAdwA3AIcANwCXADcApwA3ALcANwDHADcA1wA3AOcANwD3ADcAEF1BAwAHADcA + AXFBBQAWADcAJgA3AAJxMDEBMh4CFRQOAiMiJjUOBwc+AzMyHgIVFA4EIyIuAjU0NjMyFhUU + HgIzMj4ENTQuAiMiDgQjIi4CNTQ+BDc+AwTVFSwmGBEdKRgPEx5ujqSjm31VDHf86cM+YH9N + H1uayd7jZkmAXjcZDw4YHkFnSGXWzbaKUCVCWzZCrbq5m3AUEBwUDCdGYnWGSHbIl2IFRhIa + GwkFGRoUDhECIzpOWF1bUyEbLR8RLUtkNj+CempQLiI/WTYUICgzCh4bEzNTam5pKBcrIBMU + HiMeFA4jOCoTPEtVV1QlPU4tEQAAAAAB//7/dwUOBWAARwCYuwAhAAcALgAEK0EhAAYAIQAW + ACEAJgAhADYAIQBGACEAVgAhAGYAIQB2ACEAhgAhAJYAIQCmACEAtgAhAMYAIQDWACEA5gAh + APYAIQAQXUEDAAYAIQABcUEFABUAIQAlACEAAnG6ADMALgAhERI5ALgAAC+4ACkvuwA+AAMA + NgAEK7oACAApAAAREjm6ADMANgA+ERI5MDEBMh4CFRQGBz4DNz4DMzIWFRQOBAcOAxUUHgIV + FAYjIi4CNTQ+AjcOASMiLgI1NDYzMj4CNz4DApEPEwsFAQEqV1FHGjZROicLFxBGbomHdyUF + BgMCFhsWEBkYODIhBAYKBme4Ry1LOB8gHS51h5VOBxITEwVgHjA7HBAdDQoVFBIHDhgSCw0R + EzU7OzEjBT2Kgm0fc8eaZREbKlCg7Z4wb3Z5OhodGSImDBgVCxMbEDZcQiYAAAABANn/vATP + BYEAUgFvuwAMAAYARQAEK7sALwAHACcABCtBIQAGAAwAFgAMACYADAA2AAwARgAMAFYADABm + AAwAdgAMAIYADACWAAwApgAMALYADADGAAwA1gAMAOYADAD2AAwAEF1BAwAGAAwAAXFBBQAV + AAwAJQAMAAJxugBOAEUADBESObgATi+5AAMABPRBBQAaACcAKgAnAAJxQSEACQAnABkAJwAp + ACcAOQAnAEkAJwBZACcAaQAnAHkAJwCJACcAmQAnAKkAJwC5ACcAyQAnANkAJwDpACcA+QAn + ABBdQQMACQAnAAFxugAdACcALxESObgAHS9BBQAaAB0AKgAdAAJxQSEACQAdABkAHQApAB0A + OQAdAEkAHQBZAB0AaQAdAHkAHQCJAB0AmQAdAKkAHQC5AB0AyQAdANkAHQDpAB0A+QAdABBd + QQMACQAdAAFxuQA5AAb0uABU3AC4AABFWLgAKi8buQAqAA4+WbsAEQADAEAABCswMQEyFhUU + DgYVFB4CMzI+BDc+AzU0LgQnLgE1NDYzMh4CFRQGBx4FFRQOBCMiLgI1ND4GNT4DAVAiJAcL + Dw8OCwcRK0g2LWVmZFZFFSAjEAMLEhYVEwUIDBYfFiEWCwMFBRIVFRALSXqfrK1LUF8yDwYJ + DA0MCQcBAwsTBQ5LWw1Nb4mPj3xgGiU1IxALExgbGgwSMT1FJh1gdX95aCMyaC0wPjNPXioa + LhAdZ4OYm5dAQGVLNCAOMFRzQxljg5ialHlVDx4sHQ8AAQA1/2IEnAW8AE0AFQC4ABwvuAA2 + L7oADgA2ABwREjkwMRMyHgIXHgcXPgU3PgUzMh4CFRQOBgcOBRUUDgIjIi4CJy4HJy4DNTQ+ + AlIVMTEuEQgcIygqKSYgCwMcKC8uKA0ZQ0pLQTELDBYPCRUkMDQ2MCgNEy0wLSMVCRUmHB0d + Eg0LBiAuNzo3LyEGDBkTDAEFDAT+M1BgLRdUboGIiHxpJBZVandvXx05oKyrhlQUIi4ZDUFb + cHZ4bFoeLGhvbmRVHDZDJQ4dMkMlEmaPrLCoiFwMGC4oHwkJHBsUAAABADr/lgeoBYMAfQA3 + uwAOAAUAcAAEKwC4ADwvuABTL7gAbC+6AA4AUwA8ERI5ugAuAFMAPBESOboAYgBTADwREjkw + MRMyHgIXHgcXPgc3PgMzMh4CFRQOAgceARceAxc0PgY3PgMzMhYVFA4CBw4FBw4DFRQGIyIu + AicuAycuAycOAQcOAwcGIyImPQE0LgYnJjU0NmQPEg8PCwUiLzg6NisbAgQsQlFVUkMuBhMd + GRkRChYSCyM6TCoJMy8VKCYjDy9NZGxqWkENGSEXFAwUExsmKAweTFRYUkgbGiEUBzIqEBQO + DAcJHiYsFw8iJCIOGjIWJTwyJw8lQyATGy46PTwxIQQKFgUxCxooHQ9UepagoI5zIxpnhZqa + knZPCiFDNCEQGyQUHmB4ikhCnFooSEdJKSmAmqyroYRfEyc5JxMaHxxKS0ITL3aFj4+KPTxy + X0cQHxwSHigWHFFdZC4cRUxPJy5YKERtZGI5iSEojCB7nre3rYpdDB4bHSMAAAABADv+/ARg + BdkATwAfALgAFC+4AD0vugAKAD0AFBESOboANQA9ABQREjkwMRMyHgIXHgMXPgM3PgMzMhUU + BgcOAwceAxceAxUUDgIjIi4CJy4BJw4BBw4DIyImNTQ2NzYSNy4BJy4DNTS2BxggJxULLD1M + Kj56cGMnFRwXFQ8nERoeX3WIRilVVVMmHDgtHAgOEwwRNDs+GVOKQlGaQi0tGhUVDh8gKkKz + YSxcNB0wIhQFIR0yQycUSWF2QFGelo5BJTYkEk4yUS81hp+zYj16dW0vI0Q7LAsIExALMEZR + IWrEZ3P0gFVzRx5APDOIVoYBDoNIoF0yYlA3BhsAAAAAAQAd/vAFTAVmAEsAhrsAOgAHAEEA + BCtBIQAGADoAFgA6ACYAOgA2ADoARgA6AFYAOgBmADoAdgA6AIYAOgCWADoApgA6ALYAOgDG + ADoA1gA6AOYAOgD2ADoAEF1BAwAGADoAAXFBBQAVADoAJQA6AAJxuAA6ELkAAAAE9LgAOhC4 + ADPQuAAzLwC4ACQvuAA/LzAxAS4FNTQ2MzIeAhceAxceATMyNjc+Azc+AzMyFhUUDgQHDgMH + FA4EFRQOAiMiNTQ3PgY0AmI9hYF1WTQWFw4VExMNLVhhb0QXKRMiOiQ9a1lJHSI3LCMODBcn + PUtJQBITQ1BWJwICBAICGSQnDyQOBAcEBAICAQLDDkdhc3NrKhgTBxAZEj9qXFAkDAoaGSpd + WE4bIDkrGRAfCjZHUk5BExRDSEASFG2QpZuAIzZWPB9AJkAUUWx+g4FuVQAAAQAK/2IGjgUz + AIkAzQC4ACkvuAB1L7gAAEVYuABnLxu5AGcACD5ZuwBRAAMAbgAEK7sAIgADAA4ABCu7ADwA + AQBLAAQruAA8ELgABdC4AAUvugALAA4AIhESObgASxC4AE7QuABOL7gAZxC5AFYAA/RBIQAH + AFYAFwBWACcAVgA3AFYARwBWAFcAVgBnAFYAdwBWAIcAVgCXAFYApwBWALcAVgDHAFYA1wBW + AOcAVgD3AFYAEF1BAwAHAFYAAXFBBQAWAFYAJgBWAAJxuABLELgAgtC4AIIvMDETMh4CFz4B + Nz4BNw4BIyIuAicuAzU0NjMyHgQzMj4EMzIeAhUUBgcOAwcOAwczMiQ+ATMyFhUUDgQjIiYn + DgEHMh4CMzI+Ajc2MzIVFAYHDgMjIi4EIyIOBCMiJjU0PgI3PgM3LgM1NDbHDURrkVk/ZRwt + dDI+gzstd3hqICApGAkxKw4dK0JolWlDl5SKbkoKDx0VDU1CWZV6YSUPMj9JJ07BAQipVg8d + FDpoj6m9YjJgLz9wJjubsL1fXJh8ZiobDxIXGTd9f3cxOoyTlINsIiE6NTExMxwaIDNHSxgM + Ok9eMFaSazwqApgKDg8ESnojOG0qDRADCA0JCRIVGREgMAkOEA4JGCMqIxgTHB8MJiULDj5M + UiIONUhWLh4jHhgiCyEkIxwSAQNMhysuOC4KFSEYDxAMJRUvOyELFiImIhYoPEU8KCErIkZE + PBgMQFptOQgWGBkLHScAAQDb/mQELQXuAFIAsLsANwAGAAMABCu4AAMQuAAA0LgAAC9BIQAG + ADcAFgA3ACYANwA2ADcARgA3AFYANwBmADcAdgA3AIYANwCWADcApgA3ALYANwDGADcA1gA3 + AOYANwD2ADcAEF1BAwAGADcAAXFBBQAVADcAJQA3AAJxugAMAAMANxESObgADC+5ACsAB/S4 + ACjQuAAoL7gAKxC4AC7QuAAuLwC7ADwAAwBOAAQruwAWAAMAIwAEKzAxFzQ2Nz4DEj4CNTQ2 + Mz4FMzIeAhUUBiMiNi4BIyIOAgceARUUBgcOBwceAzMyPgI3NjMyFhUUBgcOAyMiLgLbAgIC + BQUGBQUDAhgZFlt0fm5TDy5KNRwTEAgBBBEZTqKcjjoBAgMEAgYHCAgHBwUBBB0lJg9jlIB7 + SQUKDg4SEzaFnbJiPUspDvoNFwkbldH8AQL3yIYRRVMHEhEQDQceLTUYGRQUGRQLEhYKFB0S + EC0kFG2fxNXZyKw9ERcOBggSHhYCEw4QIgkaNy0cGi07AAAAAAEACP8MBEIFWgAoAAsAuAAY + L7gAAC8wMRMyHgIXHgcXHgMVFA4CIyIuAicuAQoBJy4DNTQjBhghJxUMO1VpdHt2bi4cOS0c + CA8TDBA0PD4ZUa+vrE8dMCIUBVodMkMmFWGIpbK3q5c5JEQ6LAsIExALMEZRIWr/ARUBIYwy + YlA2BhsAAAEAqP59A98FwwBMAD+7ABgABgBAAAQruABAELgARtC4AEYvuAAYELgATtwAuwA4 + AAMAIgAEK7sADQADAEYABCu4ACIQuQAxAAP0MDETIiY1NDY3PgUzMh4CHQEOAxUUDgIHDgMj + Ii4CJy4DNTQ+AjMyHgQzMjY3PgM9ATQ+AjciDgTvDw8JCRZbdH5vUw8ySzIZBQYFAgQIDQgK + JTxWOzBzb2AdJS8bCgcRHhgVR1hhXlUfDRQIGyMUCAECBAM8ioqBZUAE9iwaFCIDBxIREA0H + Ii4yEAaD7OTke0COko0+S1QpCQUICQUGDhASCQ4kIRYFBgkGBQEBBEuFuXPxXtXWzFYLEBMQ + CwAAAAABAAcBoANCBe4ARQBwuwA0AAcALAAEK0EhAAYANAAWADQAJgA0ADYANABGADQAVgA0 + AGYANAB2ADQAhgA0AJYANACmADQAtgA0AMYANADWADQA5gA0APYANAAQXUEDAAYANAABcUEF + ABUANAAlADQAAnEAuAAaL7gAMS8wMQEiJicuBScuASMiBgcOBQcOASMiJjU0Njc+BTc+AzU0 + PgIzMhYVFB4CFx4FFx4BFRQGAx0ZIA8FJzlDPzQODhMIDRAKBRojJyUgCh07JQ0TDA4KHSEk + Ih8LCx4cExwmJwoTCgcOFAwILTxEPjMNDQwTAdsuPxNRaHNpUxUUEiUXDEljc2xbGUtMHRoS + LRsTTGBrZlcdHExOSRoZODAfPisVKCgtGhFQaHZvXRwcQR4mNgAAAQAm/vwEgP/RACIAOwC4 + AABFWLgACi8buQAKAAg+WbgAAEVYuAANLxu5AA0ACD5ZuwAFAAMAGgAEK7gABRC4AADQuAAA + LzAxFzIeAjMyPgI3PgEzMhYVFAYHDgUjIi4CNTQ2M2YIHSMlEV/U4OVwBQoEEg8UDjSQpK6l + kTUnQzEcGRp9AQIBDhYdDwEBDgoOHQcZKR8WDgYVHyUQDhAAAAEAxgQUA4MGFAAiAAsAuAAD + L7gAFC8wMRM0NjMyHgIXHgUXHgEVFCMiJicuBScuA8YRDgoYISobC0lhbmNKDR4bEw4jEghG + Y3VwXxsaIhQHBeETIBIdJhMILTtDPC8JFzESFxMOBiY2QD86FBMkIBsAAAAAAgA1/7IEpAQE + ADsAVAE3uwBMAAQAMwAEK7sAFQAEACkABCtBBQAaACkAKgApAAJxQSEACQApABkAKQApACkA + OQApAEkAKQBZACkAaQApAHkAKQCJACkAmQApAKkAKQC5ACkAyQApANkAKQDpACkA+QApABBd + QQMACQApAAFxuAApELkADAAH9LoABgApAAwREjm4ABUQuAAS0LgAEi+4ACkQuAA80LoAPwAp + ABUREjlBIQAGAEwAFgBMACYATAA2AEwARgBMAFYATABmAEwAdgBMAIYATACWAEwApgBMALYA + TADGAEwA1gBMAOYATAD2AEwAEF1BAwAGAEwAAXFBBQAVAEwAJQBMAAJxuAAVELgAVtwAuAAA + L7gAIi+7AE4AAgAuAAQrugAGACIAABESOboAKQAiAAAREjm6AD8AIgAAERI5MDEBMhYVFAYH + NjIzMhYVFAYHBhQVFBYVFB4EFx4BFRQGIyIuBCcOAyMiLgI1ND4GAz4BNy4BIyIGBw4FFRQz + Mj4EA/QoJgMCBw4IJSU8NQEBCA4SExIHBQMbGg0fISEbEwRRxMzIVSMyIhA6Y4aXopyPAgMd + IgYMBgwYDk+wrJx3RicfZoCQkIgEBB0mCg8GAiAaNINLBw4IDx4OHE1XXVZJGQ4cDSMvNVlz + enkzV6J9TBgqNyA5ho2Pg3JUMP5gVZAsAQEDBRlmgpSOfSslID1WbH8AAAAAAgBs/6oE0QY7 + AEQAWAFruABZL7gAWi+4AFkQuABA0LgAQC+5AAoABPRBIQAGAAoAFgAKACYACgA2AAoARgAK + AFYACgBmAAoAdgAKAIYACgCWAAoApgAKALYACgDGAAoA1gAKAOYACgD2AAoAEF1BAwAGAAoA + AXFBBQAVAAoAJQAKAAJxuAAF0LgABS+4AFoQuAAU3LgAQBC4ACLQuAAiL7gAQBC4ACvQuAAr + L7gAQBC4ADXQuAA1L7gAQBC4ADjQuAA4L7gAQBC4AD3QuAA9L7oARQBAAAoREjm4ABQQuQBM + AAX0QQUAGgBMACoATAACcUEhAAkATAAZAEwAKQBMADkATABJAEwAWQBMAGkATAB5AEwAiQBM + AJkATACpAEwAuQBMAMkATADZAEwA6QBMAPkATAAQXUEDAAkATAABcbgAChC4AFTQALgAAC+4 + ACIvuwAPAAEATwAEK7oACgAiAAAREjm6ACsAIgAAERI5ugBFACIAABESOTAxEzIeAhceAxc+ + AzMyHgIVFA4GBw4DIyImNTQ2Nz4BNwcGIyIuAjU0NzY0NTQuAjU0JjU0PgITPgU1NCYjIg4C + Bw4D7BMbEQkDAQMDAwFJsb29VDhMLxQyVXOBiYR3Lik8LycUFxEFBAwQAy8CBQgSDwpvAQMF + AwIDBgtMQrC8tpBYLCBlzsSwRgEDBAYGOylCUScYcJq4YSRGOCIUKkEtK2BnamllXFEhHTYo + GCsjG0MjfedrIQIUHB4LIkUoTCRgnnpREhYtFxsyJRf6Tit5iI6AaSAUEyxEUydKkYZ0AAAA + AAEANf/jBEIEEAA2AOK7ABMABwAwAAQrQSEABgATABYAEwAmABMANgATAEYAEwBWABMAZgAT + AHYAEwCGABMAlgATAKYAEwC2ABMAxgATANYAEwDmABMA9gATABBdQQMABgATAAFxQQUAFQAT + ACUAEwACcQC4AAAvuAACL7gAAEVYuAAtLxu5AC0ACD5ZuQAYAAH0QSEABwAYABcAGAAnABgA + NwAYAEcAGABXABgAZwAYAHcAGACHABgAlwAYAKcAGAC3ABgAxwAYANcAGADnABgA9wAYABBd + QQMABwAYAAFxQQUAFgAYACYAGAACcTAxATYzMhYVFA4EBw4FFRQeAjMyPgQ3NjMyFRQGBw4F + IyImNTQ+BANaLBoZHilBUlJKGShdX1hDKQoXIxlAiYqIfnEvFQ4LFBUoZniIlqJVZmNNf6az + swQCDhkXGTIxLiYcCBlRY29vaywPHRcNIz1SXGMvFhAOLhoyamVaRChfZFa2r6KFYgAAAAAC + ADX/gQSzBkgAPgBXAce7AFUABwA4AAQruwAaAAUAAwAEK0EFABoAAwAqAAMAAnFBIQAJAAMA + GQADACkAAwA5AAMASQADAFkAAwBpAAMAeQADAIkAAwCZAAMAqQADALkAAwDJAAMA2QADAOkA + AwD5AAMAEF1BAwAJAAMAAXG4AAMQuAAI0LgACC+4AAMQuAAL0LgACy+4AAMQuQATAAb0uAAd + 0LgAExC4AB/QuAAfL7gAAxC4ACzQuAAsL7gAAxC4AEbQuABGL7gAAxC4AEnQuABJL0EhAAYA + VQAWAFUAJgBVADYAVQBGAFUAVgBVAGYAVQB2AFUAhgBVAJYAVQCmAFUAtgBVAMYAVQDWAFUA + 5gBVAPYAVQAQXUEDAAYAVQABcUEFABUAVQAlAFUAAnG4ABoQuABZ3AC4AA4vuAAkL7gAAEVY + uAAzLxu5ADMACD5ZuwAAAAEATAAEK7oAAwBMAAAREjm6ACwAJAAOERI5uAAzELkAPwAB9EEh + AAcAPwAXAD8AJwA/ADcAPwBHAD8AVwA/AGcAPwB3AD8AhwA/AJcAPwCnAD8AtwA/AMcAPwDX + AD8A5wA/APcAPwAQXUEDAAcAPwABcUEFABYAPwAmAD8AAnEwMQEyFhc+AzU0JjU0NjMyHgIV + FA4EFRQSFxYVFA4CIyIuAjU0NjcOBSMiLgI1ND4EATI+BDc+ATcuASMiDgYVFBYDfUdZGgME + BAIEDxUPGxUNBAYHBgQMDwMTHSEOEREJAQECHV12iZKURlFqPhhdlbq7qP4IOXyCgn52NAID + AxVCMClseH53aU4uOwOLFhFgtJl2ISczEyATHTVMLxphgp6vulyM/v9nEhAhMSERHDtbPyuB + TBlMVlZFKyI7UC1QqJ6MaT38yyA3SE9RJU6ZVwsUJD9TXWReVSA4PwAAAAIANf/jBGIDvgA0 + AEUBkbgARi+4AEcvuAAF3LgARhC4AC7QuAAuL7gABRC4ACLQuAAiL7oADwAuACIREjm4AC4Q + uQARAAf0QSEABgARABYAEQAmABEANgARAEYAEQBWABEAZgARAHYAEQCGABEAlgARAKYAEQC2 + ABEAxgARANYAEQDmABEA9gARABBdQQMABgARAAFxQQUAFQARACUAEQACcbgABRC4ABvQuAAb + L7oANQAuACIREjm4AAUQuQA8AAX0QQUAGgA8ACoAPAACcUEhAAkAPAAZADwAKQA8ADkAPABJ + ADwAWQA8AGkAPAB5ADwAiQA8AJkAPACpADwAuQA8AMkAPADZADwA6QA8APkAPAAQXUEDAAkA + PAABcQC4AABFWLgAKS8buQApAAg+WbsAAAACAD8ABCu4ACkQuQAWAAP0QSEABwAWABcAFgAn + ABYANwAWAEcAFgBXABYAZwAWAHcAFgCHABYAlwAWAKcAFgC3ABYAxwAWANcAFgDnABYA9wAW + ABBdQQMABwAWAAFxQQUAFgAWACYAFgACcTAxATIeAhUUDgQjIiYnBhUUHgIzMj4CNzYzMhUU + BgcOBSMiLgI1ND4EAT4FNTQmIyIOBAN5NEouFliOsLGeNR0nBh8XNFU+Wbatn0IZDAoPDx5W + aHmCikU+gWhCVImxurT9y1qzo4xnOikjLG96fnVlA74VJTIdMWpkWUMnJBdGQSM/LxswUGo7 + Fg0LJRMmV1ZPPSQeQ21PXbCcgl80/jATNj1BPDUTER4aMERUYgAAAAABABf/vANGBnkATgFT + uABPL7gAUC+4AE8QuAAF0LgABS+4AFAQuAAR3LkAHgAG9EEFABoAHgAqAB4AAnFBIQAJAB4A + GQAeACkAHgA5AB4ASQAeAFkAHgBpAB4AeQAeAIkAHgCZAB4AqQAeALkAHgDJAB4A2QAeAOkA + HgD5AB4AEF1BAwAJAB4AAXG4AAUQuQAoAAf0QSEABgAoABYAKAAmACgANgAoAEYAKABWACgA + ZgAoAHYAKACGACgAlgAoAKYAKAC2ACgAxgAoANYAKADmACgA9gAoABBdQQMABgAoAAFxQQUA + FQAoACUAKAACcbgANNC4ACgQuAA50LgAOS+4AAUQuABD0AC4AD4vuwAMAAIAIQAEK7sALQAD + AEcABCu4AEcQuQAoAAP0uAAA0LgAAC+4ACgQuAAF0LgABS+4AAwQuAAW3LgARxC4ADTQuAA0 + L7gARxC4AETQuABELzAxEz4DNz4FMzIeAhUUDgIjIiY1NDc+ATU0JiMiDgQHPgMzMhUUDgIH + FB4CFRQOAiMiLgI9AQ4BIyIuAjU0NloPITRMOgUjNkRKTSUiOy0aChckGhAYBAgLDxMcNzQt + JBgDSWNCKRA7JlSHYQQEBAUQHxoVFwwDIDkYNUgsEyQDPwECAgICnfS2fEwiITA4FxhEPywV + EwsLF0EeICwYPWie2pEDCAgFPRcjGhAFZMKpiCoaLyMVYaLQb7wCAgkSHBMfHgAAAAIAJf1U + A6ID0wBEAFkBJrsAVwAGAD4ABCu7AA8ABwBMAAQruAAPELkALQAH9LoAMgBMAA8REjlBIQAG + AFcAFgBXACYAVwA2AFcARgBXAFYAVwBmAFcAdgBXAIYAVwCWAFcApgBXALYAVwDGAFcA1gBX + AOYAVwD2AFcAEF1BAwAGAFcAAXFBBQAVAFcAJQBXAAJxuAAPELgAW9wAuAAAL7gAAEVYuAAW + Lxu5ABYACj5ZuwBFAAIAOQAEK7gAFhC5ACgAAfRBIQAHACgAFwAoACcAKAA3ACgARwAoAFcA + KABnACgAdwAoAIcAKACXACgApwAoALcAKADHACgA1wAoAOcAKAD3ACgAEF1BAwAHACgAAXFB + BQAWACgAJgAoAAJxugAyABYAABESOboATQAWAAAREjkwMQEyHgIVMh4CFx4DFRQOBCMiLgIn + JjU0NjMyFhceAzMyPgESNTQuAicOBSMiLgI1ND4EATI+BD0BDgEHDgUVFBYCqhkkFQoNFBAP + CAccHBUfOlRqf0dFemRKFB8UEREhDRJNXmQpOnVdOgcLDgcYTV5pamUqLDojD015k4xz/lIl + Z3BvVzYMHxI5eHFlSywgA9MPFx0PCxkoHBlZisF/Ws3JuI1ULUFKHSsmEhgZFBw+NSNxwwEF + lTR0dXEzNG1mWkMnGyw5Hl6umH1aMf0dM1VyfYE7LQQJBhNCVGFkYCkvJwAAAQDE/6MD1QYz + AEcBTrgASC+4AEkvuAAF3LkAFAAF9EEFABoAFAAqABQAAnFBIQAJABQAGQAUACkAFAA5ABQA + SQAUAFkAFABpABQAeQAUAIkAFACZABQAqQAUALkAFADJABQA2QAUAOkAFAD5ABQAEF1BAwAJ + ABQAAXG4AEgQuAAv0LgALy+5AEMABvRBIQAGAEMAFgBDACYAQwA2AEMARgBDAFYAQwBmAEMA + dgBDAIYAQwCWAEMApgBDALYAQwDGAEMA1gBDAOYAQwD2AEMAEF1BAwAGAEMAAXFBBQAVAEMA + JQBDAAJxuAAc0LgAHC+4AEMQuAAh0LgAIS+4AEMQuAAk0LgAJC+4AC8QuAAq0LgAKi+4AC8Q + uAA20LgANi+4AEMQuAA80LgAPC8AuAA5L7gAJy+4AABFWLgADC8buQAMAAg+WbsAAAADABcA + BCu6AEMAJwA5ERI5MDEBMh4CFRwBDgMjIi4CNTQSNTQmIyIOAgcUHgIVFAYVDgEjIiY1ND4C + NTQuBDU0NjMyFhUUHgQXPgMDHStEMBkDBQkOCgsYFQ4POjkzenxzKwEBAQEDLBUUIQQEBAEC + AwIBEx4fGgEBAQICASxygIYD3xxKf2RHmZOEZDsGEiIcQQEf4FFEKENWLUWDdGEkHikIQkge + KQopWpx+ae7s26xuCis1RzgJQ2iIm6lVMFxILAACAKb/7gF/BaAAHQArAKm7ACEABwAnAAQr + QQUAGgAnACoAJwACcUEhAAkAJwAZACcAKQAnADkAJwBJACcAWQAnAGkAJwB5ACcAiQAnAJkA + JwCpACcAuQAnAMkAJwDZACcA6QAnAPkAJwAQXUEDAAkAJwABcboAGQAnACEREjm4ABkvuQAF + AAf0uAAZELkACgAH9LgAD9C4AA8vALgAAEVYuAAULxu5ABQACD5ZuwAeAAMAJAAEKzAxATIe + AhUUDgIVFB4CFRQOAiMiLgI1NBI+ARMyFhUUBiMiJjU0PgIBAA0hHhQICwgDAwMFDx0XFRkP + BQUNGDctLUU2LjASIi4DthUgJxILXYadS2F5SCMJDBQOCCI9VjOjAQ/DawHqOyw5QjcwFywj + FQAAAAAC/yv9xQGNBaAAOgBIAJK7AAcABwBEAAQruAAHELkALAAG9LgABxC4AD7QuAA+L0EF + ABoARAAqAEQAAnFBIQAJAEQAGQBEACkARAA5AEQASQBEAFkARABpAEQAeQBEAIkARACZAEQA + qQBEALkARADJAEQA2QBEAOkARAD5AEQAEF1BAwAJAEQAAXEAuwAlAAMAEQAEK7sAOwADAEEA + BCswMQEyHgQVFA4CBw4DIyImJy4DNTQ+AjMyHgQzMj4ENTQuBDU0JjU0PgITMhYVFAYjIiY1 + ND4CARIcJhkOBwEECAwJCBooNyVKhEolLxsKBQ4WEgwvPUVEPhcWHxQLBgEGCAsIBgECCA4s + LS1FNi4wEiIuA8tXiquqlzBBkpeTQD5PLhEbFgoVFBMKCSAgFwkPEA8JOl13eXEqIm6BiXld + FhQrFRUnHBEB1TssOUI3MBcsIxUAAQCk/5YEBAZkAFkA6LsASwAFAEAABCtBIQAGAEsAFgBL + ACYASwA2AEsARgBLAFYASwBmAEsAdgBLAIYASwCWAEsApgBLALYASwDGAEsA1gBLAOYASwD2 + AEsAEF1BAwAGAEsAAXFBBQAVAEsAJQBLAAJxuABLELgAJNC4ACQvuABAELkAKQAH9LgAQBC4 + AC/QuAAvL7gAQBC4ADTQuAA0L7gAQBC4ADrQuAA6L7gAQBC4AD3QuAA9L7gASxC4AEjQuABI + L7gASxC4AE7QuABOLwC4AEUvugASACwAAyu4ABIQuAAV0LgAFS+4ABIQuQAcAAH0MDEBMhYV + FAYHDgMHHgUzMjYzMhUUDgIjIi4CJy4BJx4DFRQGIyImJy4DJy4BNTQ2Ny4BNTQ2Nz4DMzIW + FRQGFRQWFz4FNz4DA+MLEiYuHoGbnjwLKj1SY3ZEKzwRExswQyhckXhmMQgSCQQJBwQnGh0S + BAECAwMBERQUEQIBAwIBBAoSDh8XCQICLnd+fGZHChUdFRED1Q8UFTEgFTpDSCIPOUNGOSUK + DgwlJBouT2g6CQwFfK1wOwo9Njg8Dl6QuGcCCxQOGg1n0md93lUuOyIOSTpy8XtYq1IWMzUz + Kh4FCw8KBQAAAAABAM3/jQFWBmoAMQCeuwAIAAYAJAAEK0EhAAYACAAWAAgAJgAIADYACABG + AAgAVgAIAGYACAB2AAgAhgAIAJYACACmAAgAtgAIAMYACADWAAgA5gAIAPYACAAQXUEDAAYA + CAABcUEFABUACAAlAAgAAnG4AAgQuAAF0LgABS+4ACQQuQATAAf0uAAkELgAHdC4AB0vuAAk + ELgALdC4AC0vALgAAC+4ABgvMDETMh4CFRQGFRQeCBUUDgIjIi4CNTQuBDU8AjY0NjwBNTQ+ + AvwTFwwEAQIDBAUFBQQDAhkiIgkJDAYCAQECAQEBAQEJEgZqFiMtFxEiDgtZibDEzcSxiloM + HTMmFhQfJxMNNUdSUk0fF3Ocur2zjl0JEjIuIQABAKX/rAXTBB8AcgGquwBkAAcAXAAEK7sA + CgAEABsABCu7ACgABAA3AAQrQQUAGgAbACoAGwACcUEhAAkAGwAZABsAKQAbADkAGwBJABsA + WQAbAGkAGwB5ABsAiQAbAJkAGwCpABsAuQAbAMkAGwDZABsA6QAbAPkAGwAQXUEDAAkAGwAB + cbgAGxC4ABTQuAAUL7gAKBC4ACXQuAAlL0EFABoANwAqADcAAnFBIQAJADcAGQA3ACkANwA5 + ADcASQA3AFkANwBpADcAeQA3AIkANwCZADcAqQA3ALkANwDJADcA2QA3AOkANwD5ADcAEF1B + AwAJADcAAXFBIQAGAGQAFgBkACYAZAA2AGQARgBkAFYAZABmAGQAdgBkAIYAZACWAGQApgBk + ALYAZADGAGQA1gBkAOYAZAD2AGQAEF1BAwAGAGQAAXFBBQAVAGQAJQBkAAJxuABkELgAQ9C4 + AEMvuABkELkAUwAF9LgAUNC4AFAvugBuADcAKBESObgAChC4AHTcALgAXy+4AC0vuwBpAAMA + PAAEK7sAAAADACAABCu6AGQALQBfERI5ugBuAC0AXxESOTAxATIeAhceAxUUDgIjIi4CNTQm + NCY0JjU0LgIjIg4CBx4BFRQOAiMiJjU0PgQ1NC4CIyIOBAceARUUDgIjIi4CNTQ2NTQuBCcm + NTQ2MzIeAhc+AzMyHgIXPgME/BdAPC4GAwUFAwcPFxAREwkDAQIBFyQrExFMXmImAgISGyAN + GhUCBAQEAhcmNBwMMkFKSEAWBAMLExwSDRAIAwEBAwQHCgYNEBAUIRoUByBbXVIYLVFFOBMz + dGtWA8kxXIRSInqNjTMzRSoSDxwnGBBSanluVxU5UDMXJ0NcNh8lEoXNjEk4MxFPant3aiU3 + VDkcIDpPX2o4M1QXKlFAKBMhLhoRJRQZZH2Kf2kdQC4kJyVYkm49dVo3JkVfOjRWPSEAAQDN + /8kD+gPjAEoBRbgASy+4AEwvuABLELgARtC4AEYvuQA3AAT0QSEABgA3ABYANwAmADcANgA3 + AEYANwBWADcAZgA3AHYANwCGADcAlgA3AKYANwC2ADcAxgA3ANYANwDmADcA9gA3ABBdQQMA + BgA3AAFxQQUAFQA3ACUANwACcbgABdC4AAUvuAA3ELgACNC4AAgvuABMELgAFNy4ABvQuAAb + L7gAFBC5ACoABPRBBQAaACoAKgAqAAJxQSEACQAqABkAKgApACoAOQAqAEkAKgBZACoAaQAq + AHkAKgCJACoAmQAqAKkAKgC5ACoAyQAqANkAKgDpACoA+QAqABBdQQMACQAqAAFxuAAj0LgA + Iy+4ADcQuAA00LgANC+4AEYQuAA/0LgAPy8AuAAAL7gADy+4AB4vuAA8L7oACAAeAAAREjm4 + AA8QuQAtAAP0MDEBMh4CFRQGFT4FMzIeAhUcARYUFhQVFAYjIi4CNTwBJjQmNDU0JiMiDgQH + BhQVFA4CIyImNTQ+BDU0PgIBIQwVDggCG0hTWVZQICZKOiMBAQ0aEh0VDAEBGh8PSV9tZlYY + AgoVIBcbEAEBAgEBCRIeA+MZKzceFEQtGz49OSsaLUhcLy+BjItyTgg8RQogPDEhY3N6b1sb + UkQiOEtTVSY+fTtXbDsUOisKTnWQmJZBLVI+JAAAAAIANf/jBHsDxQAXADUBYbgANi+4ADcv + uAAF3LgANhC4ABHQuAARL7kAJwAE9EEhAAYAJwAWACcAJgAnADYAJwBGACcAVgAnAGYAJwB2 + ACcAhgAnAJYAJwCmACcAtgAnAMYAJwDWACcA5gAnAPYAJwAQXUEDAAYAJwABcUEFABUAJwAl + ACcAAnG4AAUQuQAxAAX0QQUAGgAxACoAMQACcUEhAAkAMQAZADEAKQAxADkAMQBJADEAWQAx + AGkAMQB5ADEAiQAxAJkAMQCpADEAuQAxAMkAMQDZADEA6QAxAPkAMQAQXUEDAAkAMQABcQC4 + AABFWLgADC8buQAMAAg+WbsAAAADABgABCu4AAwQuQAqAAL0QSEABwAqABcAKgAnACoANwAq + AEcAKgBXACoAZwAqAHcAKgCHACoAlwAqAKcAKgC3ACoAxwAqANcAKgDnACoA9wAqABBdQQMA + BwAqAAFxQQUAFgAqACYAKgACcTAxATIeAhUUDgQjIi4CNTQ+BBciDgIHDgMHDgMVFBYzMj4E + NTQuAgOBPF1AIViQtryzQz5dPR5Lf6m7w2UmSEM9HBQsMDEZO2dMK0I5Opymo4BPFycyA8Ul + QFYxbMWpiGA0GjlZQF+6qJBpPH8bKjUaEg4KDhIqaXN3OTlANVt8jplMJzchDwAAAAIAzP2y + BY8D+gBDAGQA8LgAZS+4AGYvuABlELgAP9C4AD8vuAAA0LgAAC+4AD8QuQBjAAf0ugAOAD8A + YxESObgAZhC4ABrcuABjELgAJtC4ACYvuABjELgAK9C4AD8QuAA10LgANS+4ABoQuQBNAAT0 + QQUAGgBNACoATQACcUEhAAkATQAZAE0AKQBNADkATQBJAE0AWQBNAGkATQB5AE0AiQBNAJkA + TQCpAE0AuQBNAMkATQDZAE0A6QBNAPkATQAQXUEDAAkATQABcQC4AAUvuAAwL7sAFQADAFIA + BCu7AEQAAQAjAAQrugAOADAABRESOboAJgAjAEQREjkwMRM0PgIzMh4CFRQGHQE+BTMyHgIV + FA4GIyImJx4DFRQOAiMiLgI1ND4CNTQuAjU0PgITMj4GNTQuAiMiDgQHDgMVFA4CKwHTBgwR + CxsjEwgEI3OQo6ScQT5aOxw/bZGkraaVOQ4YCwEFBAQKFiIYERUMBQMDAwcIBwIDAoc0ipuj + m4lnPBQiLRotbHV5cmcpFxoMAwcXKyQUAzNHUCcJHTRIKidMMRQjSEQ9LRocM0kuOHd4dGhY + QCQBA0NlUUIhNmhTMhQkMx4lVlBBDwlZiatcPIF/ef2dIThMWF9eWSYXIhcMEB0mLTEYDhQS + FQ4SHBIKAAAAAgAp/a4E4wQIADMASQEuuABKL7gASy+4AAjcuAAA0LgAAC+4AAgQuQAZAAf0 + QQUAGgAZACoAGQACcUEhAAkAGQAZABkAKQAZADkAGQBJABkAWQAZAGkAGQB5ABkAiQAZAJkA + GQCpABkAuQAZAMkAGQDZABkA6QAZAPkAGQAQXUEDAAkAGQABcbgAHNC4ABwvuABKELgAKNC4 + ACgvugA+AAgAGRESObkARwAH9EEhAAYARwAWAEcAJgBHADYARwBGAEcAVgBHAGYARwB2AEcA + hgBHAJYARwCmAEcAtgBHAMYARwDWAEcA5gBHAPYARwAQXUEDAAYARwABcUEFABUARwAlAEcA + AnEAuAAAL7gAAEVYuAASLxu5ABIACj5ZuwA0AAEAIwAEK7oAHAASAAAREjm6AD4AEgAAERI5 + MDEBMhYVFA4BAhUUHgIVFA4CIyIuBDU0NjcOBSMiLgI1ND4GNz4BATI+BDc+ATcOBxUUFgSw + GRoPEw8ICQgXISMMCxALBwMBAwkqcYWTlpRDRl85GDhli6S3v8BaCRb8mT+RlJKDbSUGEQk9 + j5aYi3hZMyoECCxCGnC8/u2+YsKmfRweKxwNBx03YZBmZ/WGKlpXTzsjGC0/KC5teHx6c2NP + Giow/CUmQFVdXytVo0cTPU5bYmVhWiYmGgAAAQC//9MEugPbAEABHrsALgAGADwABCu7ABQA + BwAcAAQrQSEABgAuABYALgAmAC4ANgAuAEYALgBWAC4AZgAuAHYALgCGAC4AlgAuAKYALgC2 + AC4AxgAuANYALgDmAC4A9gAuABBdQQMABgAuAAFxQQUAFQAuACUALgACcbgALhC4AAXQuAAF + L7gALhC4AAjQuAAIL0EFABoAHAAqABwAAnFBIQAJABwAGQAcACkAHAA5ABwASQAcAFkAHABp + ABwAeQAcAIkAHACZABwAqQAcALkAHADJABwA2QAcAOkAHAD5ABwAEF1BAwAJABwAAXG4ABQQ + uQAhAAX0uAAUELgAQtwAuAAARVi4ADMvG7kAMwAIPlm7AA8AAwAkAAQruAAPELgAANC4AAAv + MDEBMh4CFRQGBz4FMzIeAhUUDgIjIiY1ND4CNTQmIyIOAgcOAxUUDgIjIjU0PgQ1ND4CAQIR + HBQLAgIeXnKAg343MUwzGg8cJxgREg4RDjwwLHeJlEksPSgSEx8pFhIEBQYFBAIJEQPVMll7 + ShIfDixeWlE8JC9RbD0wVUAmHRYNHCxDNURNJElvSy1ZZHRINEcrEjQDWYyusKM7MEInEQAA + AAEASP/TBAwD8ABEAQi7ABcABQAvAAQrQQUAGgAvACoALwACcUEhAAkALwAZAC8AKQAvADkA + LwBJAC8AWQAvAGkALwB5AC8AiQAvAJkALwCpAC8AuQAvAMkALwDZAC8A6QAvAPkALwAQXUED + AAkALwABcbgAFxC4AEbcALgAAC+4AABFWLgAIC8buQAgAAg+WbsAFAACADIABCu4ABQQuQA3 + AAP0ugAPABQANxESObgAIBC5ACgAA/RBIQAHACgAFwAoACcAKAA3ACgARwAoAFcAKABnACgA + dwAoAIcAKACXACgApwAoALcAKADHACgA1wAoAOcAKAD3ACgAEF1BAwAHACgAAXFBBQAWACgA + JgAoAAJxMDEBMh4CFRQGBw4FBz4DMzIWFRQOBiMiLgI1NDYzMj4ENTQmIyIOAiMiLgI1ND4G + AvQSHRQLFSMydnhzYEUNIoSls1GAeDxlhJCTgmcdGB4QBSAfQKSpon5NRVlpx6mEJg4YEgsu + TWdxdmtaA/APFRkJFRgGCSczPkNDHwkgHxZYWjxsYFNENCQTGCEkDRoLIjpOWFwsKSQfJh8J + FSQcIUpLSkM5KRgAAAEAAv+kAw4FiwBNANC7ADAABwA/AAQrQSEABgAwABYAMAAmADAANgAw + AEYAMABWADAAZgAwAHYAMACGADAAlgAwAKYAMAC2ADAAxgAwANYAMADmADAA9gAwABBdQQMA + BgAwAAFxQQUAFQAwACUAMAACcbgAMBC5AEQABvS4AAvQuABEELgAENC4ABAvuAAwELgAGtC4 + ABovuAAwELgAH9C4AB8vALgAFS+4ADovuwALAAMASQAEK7gACxC4AAPQuAADL7gACxC4AAbQ + uAAGL7gACxC4ACDQuAAgLzAxEzQ2MzIWMzI+Ajc+AzU0PgIzMh4CFRQOAh0BPgMzMhYVFAYH + DgMHDgUVFAYjIi4CNTQ+AjcOAyMiLgICEBkZRSsIIi0zGgEBAQEIDREJCRkVDwMEA0RNKxYN + MTckLgksQVIvAgUFBQQCKiYJDQgDBwoIAhczMS0SND0hCgMQEA8IAwMEAi1lXEsTKl9PNBQi + MRwdc4WBKgsGBgQBLRkXDwcCBgkKBjqLj4pyUQ83Lx82SCpUjYaLUQIGBQMeJyUAAAAAAQDN + /90DsgP+AEYBhLgARy+4AEgvuABHELgAQtC4AEIvuQAKAAX0QSEABgAKABYACgAmAAoANgAK + AEYACgBWAAoAZgAKAHYACgCGAAoAlgAKAKYACgC2AAoAxgAKANYACgDmAAoA9gAKABBdQQMA + BgAKAAFxQQUAFQAKACUACgACcbgASBC4AC/cuQAgAAX0QQUAGgAgACoAIAACcUEhAAkAIAAZ + ACAAKQAgADkAIABJACAAWQAgAGkAIAB5ACAAiQAgAJkAIACpACAAuQAgAMkAIADZACAA6QAg + APkAIAAQXUEDAAkAIAABcbgAG9C4ABsvuAAvELgAKNC4ACgvuABCELgAO9C4ADsvALgAAEVY + uAAjLxu5ACMADD5ZuAAARVi4ADYvG7kANgAIPlm5AA8AA/RBIQAHAA8AFwAPACcADwA3AA8A + RwAPAFcADwBnAA8AdwAPAIcADwCXAA8ApwAPALcADwDHAA8A1wAPAOcADwD3AA8AEF1BAwAH + AA8AAXFBBQAWAA8AJgAPAAJxMDETMhYVFA4EFRQeAjMyPgQ3PgM1NC4CNTQ2MzIeAhUUBhQG + FAYVFA4EIyIuAjU8ATY0NjQ1ND4C/B0tAwYFBgMOGycZHU5TVEg4DQcJBQICAgIiFwwSDAcB + AgFDaoSBciIzPiAKAQEDChEDnEA/FU9jbWdYHCk1HgsHDhUaIRQKM0hYMDZtYEwVTj8VICcT + DFJ0i42EMTJPPSwcDSU6RCAVVWt2blsZJUs6JQABABz/sANXA/4ARwB9uwAsAAcANgAEK0EF + ABoANgAqADYAAnFBIQAJADYAGQA2ACkANgA5ADYASQA2AFkANgBpADYAeQA2AIkANgCZADYA + qQA2ALkANgDJADYA2QA2AOkANgD5ADYAEF1BAwAJADYAAXEAuAAxL7gAAEVYuAAaLxu5ABoA + DD5ZMDETMhYXHgUXHgEzMjY3PgU3PgEzMhYVFAYHDgUHDgMVFA4CIyIuAjU0LgInLgUnLgE1 + NDZCGB8QBCg5Qz80Dg4TCA4PCgUaIiglIAodOyUNEwwOCh0iIyIfCwseHBMcJicKCgsGAQgO + FAwILTtEPzMNDQwUA8MuPxNSZ3NpVBQVESUXDEhkc2xaGUxMHRoSLhoUS2BrZlgdHExOSRka + OC8fEB0mFhUoKC0aEVBodm9dHBtAHiY4AAEAHP/JBboD4QB3ACYAuABmL7gAPS+4AABFWLgA + UC8buQBQAAg+WboAWgBmAD0REjkwMRMyHgIXHgUXHgMzMjc+BTc+AzMyFhUUBgcGFRQeAhce + AzMyNz4FNz4BMzIVFAYHDgcHDgMjIi4CJy4DJw4FBw4DIyIuAicuBScuATU0NlAOFA8NCAUm + MzkzJAUFCQkIBQYHBRwmLCwnDxUfICUdFxEcDAMpNzYNCRANCwUJCgYnNz87Mg0dOBQmERMI + ISw0NTQqHgYMBgwcICAgDQMEBDJFSRsIISksKB0GCRIbKB8fHAwFCAYlMzo2KgoJCCADuBUh + KBQOUW16a04KDB0bEhUPQldkYFUcKj8pFBUSG1AqDA0mY2JTFhEfGg8cEFVwgnpnHkIwMRY7 + IA1AWWtwbl9IEyY/LhoZKjYdHGp+hjkOQlViXE8XI0AwHS9IViYaXHB6cFwaGCwTLDMAAAAB + ADT/tgNhA/cARwAqALgAAC+4AAIvuAAoL7gAAEVYuAAaLxu5ABoACD5ZugAhACgAAhESOTAx + ATYzMhYVFAYHDgMHHgMXHgEVFA4CIyInLgMnDgMHBiMiJjU0Njc+AzcuAzU0NjMyFhceAxc+ + AwMrBwYPGgoLGkdVYDIsVks7EQwKDhYbDBUKCjZMWzAtV1FIHBQQEBEJCQYzT2U3Plw+HxkS + FCwOByU2RCZAe2VHA/IFKx0PHg0cUGNzPTZqXk8aEyMQFSIaDhIQT22DRDl1cGowITkmGzYX + D0hke0FXgVg0CxESFxcMMkVVLkuNcU0AAAAAAf+U/csDyAPhAEkAEQC4ACIvuwBDAAMANQAE + KzAxJS4HJyY1NDYzMh4CFx4DFz4FNz4BMzIVFAYHDgcHDgMjIiYnJjU0NjMyFhceATMyPgQB + zw4wPkdHQzUlBQokEwwdHhwLHFxkXR0iRD43Kx0GHzQUJBwZCjRKWl5bTToNGjc3Nxo0dTYY + JBcOHgswTSIRHiIpN0hSDUJdbnNvXEIMFxUhKhMhKhc5k5SEKk2ZjnxgPwo5Ix8UQi0RbJ3A + ysiqgR8+SikNSEEcFhQTBgcbLRAqSXCdAAAAAQAb/90EVAPfAIMBDAC4ACYvuAAARVi4AHAv + G7kAcAAIPlm4AABFWLgAZi8buQBmAAg+WbsAGgADABIABCu7ADsAAQBIAAQruABIELkANgAC + 9LgAANC4AAAvuAA2ELgABdC4AAUvuAA2ELgACNC4AAgvugANABIAGhESObgAEhC5AB8AAfS4 + ADYQuAAz0LgAMy+4AGYQuQBSAAH0QSEABwBSABcAUgAnAFIANwBSAEcAUgBXAFIAZwBSAHcA + UgCHAFIAlwBSAKcAUgC3AFIAxwBSANcAUgDnAFIA9wBSABBdQQMABwBSAAFxQQUAFgBSACYA + UgACcboATQBmAFIREjm4AFfQuQBrAAL0uABIELgAe9C4AHsvMDETMh4CMzI2Nz4DNw4DIyIu + AjU0NjMyHgIzMj4EMzIWFRQOAgcOAwcyNjM+AzMyFhUUDgIHDgMHDgMHPgIyMzIeAjMyPgIz + Mh4CFRQOAiMiLgIjIg4CIyImNTQ2Nz4DNyMiLgI1NDZ3ER4mNikTTi4wXVRGGSdyeXEnMT0i + DCsdDxoaHRFAhoB2YkgSGRswRk4eDzVFUisFBwVTgmpbLBcQDxMUBQ5Efb+JKk0/LQoQMDg5 + GRlVaHI3RVo5HwkJCwYBMF+OXiZaXFomMFZHORMmIygjBy9GWDB0JjgmEgoB7gcHBwEDM2RZ + ShgJFBELERofDhwbCQsJEhofGhIYHxErMTMYDDRIVy4CBgoGAw0IBwwJBwEEERMSBC1WSDYN + BAQCBAYEJi8mDRUYDCI+MBwNEQ0YHBgiFRYqHwYxSl4zDRUaDAwVAAABAIH+YQQKBiYAZgEz + uwAoAAcAQgAEK7sADgAHAGIABCtBIQAGAA4AFgAOACYADgA2AA4ARgAOAFYADgBmAA4AdgAO + AIYADgCWAA4ApgAOALYADgDGAA4A1gAOAOYADgD2AA4AEF1BAwAGAA4AAXFBBQAVAA4AJQAO + AAJxuAAOELkAEwAH9LoAGABCABMREjm6AEkAYgAOERI5uABJL7kAIAAH9EEhAAYAKAAWACgA + JgAoADYAKABGACgAVgAoAGYAKAB2ACgAhgAoAJYAKACmACgAtgAoAMYAKADWACgA5gAoAPYA + KAAQXUEDAAYAKAABcUEFABUAKAAlACgAAnG4AA4QuABd0LgAXS8AuAAAL7gAAi+7AC0AAQA9 + AAQruwAbAAEATAAEK7oAGABMABsREjm4AEwQuABS0LgAUi8wMQE2MzIWFRQHDgUVFB4CFRQO + Agc+ATMyHgIVFAYHDgMVFB4CMzI2NzYzMhYVFAYHDgMjIi4CNTQ+Ajc2NTQmIyIGBw4BIyIm + NTQ2Nz4DNTQuAjU0PgIDXiImKTspJF1hXEgsKTEpK1ByRgoTCitRPSUcICdZSzEXNVY+Trxk + GRUMDykzJV5pcDY+dFk1NFFlMiRRUB07FBUNBB8iMjZWd0shLTctQ3mqBh0JEwwPCgkkMjxE + SSQgPURTNi9UTUgjAQEVJzgiHEAiKmx1dzUgNykYNEAQDAsRNyYbLSASGzlYPTt/f305KCEh + JQQDAwEeFxo6FiI9OTcdKkVIUzg/eGlWAAAAAQDZ/lgBWQZkACQAlLsABgAFAB0ABCtBIQAG + AAYAFgAGACYABgA2AAYARgAGAFYABgBmAAYAdgAGAIYABgCWAAYApgAGALYABgDGAAYA1gAG + AOYABgD2AAYAEF1BAwAGAAYAAXFBBQAVAAYAJQAGAAJxuAAGELgAA9C4AAMvuAAdELgAFtC4 + ABYvuAAdELgAINC4ACAvALgAEy+4AAAvMDEBMhYVFAYVFBoBHgIXFhQVFAYjIiYnLgIKAjU0 + NjU0PgIBDB8YCQQGBwYGAQEmGh0TBAEDAgMCAQQBCRMGZEo6avuJjP7f/u/2wYAUCA4IPTY5 + PA+HzwEIASABJ4iL6U4iOSgWAAAAAQBD/nQD+QW8AGcBdLsAHgAHAEkABCu7ACMABgBBAAQr + QSEABgAeABYAHgAmAB4ANgAeAEYAHgBWAB4AZgAeAHYAHgCGAB4AlgAeAKYAHgC2AB4AxgAe + ANYAHgDmAB4A9gAeABBdQQMABgAeAAFxQQUAFQAeACUAHgACcboAUwBJAB4REjm4AFMvQQUA + GgBTACoAUwACcUEhAAkAUwAZAFMAKQBTADkAUwBJAFMAWQBTAGkAUwB5AFMAiQBTAJkAUwCp + AFMAuQBTAMkAUwDZAFMA6QBTAPkAUwAQXUEDAAkAUwABcbkADgAH9LkACAAH9EEFABoAQQAq + AEEAAnFBIQAJAEEAGQBBACkAQQA5AEEASQBBAFkAQQBpAEEAeQBBAIkAQQCZAEEAqQBBALkA + QQDJAEEA2QBBAOkAQQD5AEEAEF1BAwAJAEEAAXG6AE4ADgAIERI5uAAOELgAWdC4AFkvuAAj + ELgAadwAuwA6AAMAKgAEK7sAAwACAFwABCswMRM+ATMyHgIVFAYHDgEVFB4CFx4BFRQGBw4D + FRQXHgEVFA4EIyImJy4DNTQ2MzIXHgEzMj4ENTQuAicuATU0PgI3LgM1NDY3PgE1NCYjIgYH + BiMiNTQ+AvhLiz08Y0gnLTAYHR1Bak0xLDQtSXRQK15NVyxMZnaAPy1VKRolFwsTEAgFQXQ0 + RnRcRC0WGis6IFFGN1lyOzhiSysrMyQgXEo9k00YERUOGiYFgx0cGjBHLS5uPyAyFRIeFxEG + BB4UFzENFSotMh4+UkSeW0Z8aVI6Hw4PChwgIg8VHAIXEx4yQUZHHidKQz0aQmstK0U3LBEF + FiU2JiNbOipGHTM4KCoOFgseIBwAAQBNAb4EsAPLACwAHwC4ABIvuAAnL7sACgADABoABCu7 + AAUAAwAfAAQrMDETPgMzMhYXFjMyPgI3PgEzMhUUBgcOASMiJy4BIyIOAgcOASMiJjU0Nm0u + X2BeLDFXIyM+IE1ZZzkZJQwQHiF701FaNCY9IBYzP08yFSgQDhAPAjNGdFQuP0dHJEFcORkW + FRJBKpuYWkBBHjxaPRoYEhEOKgAAAAABAAr/zwYBBRQAkAEKuwAPAAUALgAEK0EhAAYADwAW + AA8AJgAPADYADwBGAA8AVgAPAGYADwB2AA8AhgAPAJYADwCmAA8AtgAPAMYADwDWAA8A5gAP + APYADwAQXUEDAAYADwABcUEFABUADwAlAA8AAnG4AC4QuAAx0LgAMS8AuAAARVi4ACkvG7kA + KQAIPlm7AFgAAwBiAAQruwBtAAEAdgAEK7gAKRC5ABQAAfRBIQAHABQAFwAUACcAFAA3ABQA + RwAUAFcAFABnABQAdwAUAIcAFACXABQApwAUALcAFADHABQA1wAUAOcAFAD3ABQAEF1BAwAH + ABQAAXFBBQAWABQAJgAUAAJxuABtELgAatC4AGovMDEBIg4EBw4DBw4BFRQeAjMyPgQ3NjMy + FRQGBw4FIyIuAjU0NjcOASMiLgI1NDY3PgM3NjcOASMiLgI1ND4CNz4BNz4DMzIeAhUUDgIj + IiYnDgMHPgEzMh4CFRQGKwEiBgcOAQc+AzMyHgIVFA4CIyImNTQmA6cNPFBbVEYTDi45QiIG + CAscMCY7pb3Ox7lKFg4MEBJGrr/IxLdNRFYyEgQDKkEOFxsNAxEYFSMpMyUvakFmFRoiEwcf + LTQVMI1LgOG2gyMPIx4UHy82FxMzGQ1AWWw5Gi4UMGJPMxwRnDyqWz5vKkuYinMmJTAcCgwP + DwMGDwgBmAoRFBMQBAMKDQ8HFysUGy0fESZDW2hxOBAMCB4SR4Z3Y0coIDxUMxMkEwgIDBMX + CxsUAwMGCg4JfIgLDQYOFg8XIRUNBAgRCIC4dzgYIiQMDSglGwUKBy1EWTQCAQ0XIBITChUO + P4I/ERoSCQkSGRAQFw8HBw8LBgAAAAABAKj+1wJGAVgAJQB+uwADAAYAFQAEK0EFABoAFQAq + ABUAAnFBIQAJABUAGQAVACkAFQA5ABUASQAVAFkAFQBpABUAeQAVAIkAFQCZABUAqQAVALkA + FQDJABUA2QAVAOkAFQD5ABUAEF1BAwAJABUAAXG4AAMQuAAn3AC4AAovuwAAAAIAGgAEKzAx + ATIWFRQOBCMiJjU0Njc+AzU0LgIjIg4CIyI1ND4CAaZOUilCU1JJGBcWGRQsXUswDBETBxEa + FhYMIBMiMgFYZmEnX2NdSCwgFRQaECJUXmY2ExkPBQkLCR8PIBsSAAAAAAH/df3FA0YGeQBs + AVW4AG0vuABuL7gAbRC4AADQuAAAL7gAENC4AG4QuAAc3LkAKQAG9EEFABoAKQAqACkAAnFB + IQAJACkAGQApACkAKQA5ACkASQApAFkAKQBpACkAeQApAIkAKQCZACkAqQApALkAKQDJACkA + 2QApAOkAKQD5ACkAEF1BAwAJACkAAXG4AAAQuQA/AAf0QSEABgA/ABYAPwAmAD8ANgA/AEYA + PwBWAD8AZgA/AHYAPwCGAD8AlgA/AKYAPwC2AD8AxgA/ANYAPwDmAD8A9gA/ABBdQQMABgA/ + AAFxQQUAFQA/ACUAPwACcbgAM9C4AAAQuABo0LgAaC8AuwBhAAMATQAEK7sAFwACACwABCu7 + ADgAAwA/AAQruAA/ELgAANC4AAAvuAA/ELgAA9C4AAMvuAA/ELkAMwAD9LgAC9C4AAsvuAAz + ELgAENC4ABAvuAAXELgAIdwwMQEOASMiLgI1NDY3PgM3PgUzMh4CFRQOAiMiJjU0Nz4BNTQm + IyIOBAc+AzMyFRQOAgccAQ4FBw4DIyImJy4DNTQ+AjMyHgQzMj4ENTQuAgFEIDkYNUgsEyQf + DyE0TDoFIzZESk0lIjstGgoXJBoQGAQICw8THDc0LSQYA0ljQikQOyZUh2EBAQIDBAYECBoo + NyVKhUklLxsKBQ4WEgwvPEZEPhcOFQ8JBgICAQICugICCRIcEx8eAgECAgICnfS2fEwiITA4 + FxhEPywVEwsLF0EeICwYPWie2pEDCAgFPRcjGhAFGWmMpqypk3IfPk8uERsWCxQUEwoJICAX + CQ8QDwk3X4CSnk5MjnZZAAAAAAIAbf7LAmABagAjAEAAjLsABQAFABcABCtBIQAGAAUAFgAF + ACYABQA2AAUARgAFAFYABQBmAAUAdgAFAIYABQCWAAUApgAFALYABQDGAAUA1gAFAOYABQD2 + AAUAEF1BAwAGAAUAAXFBBQAVAAUAJQAFAAJxuAAFELkAKQAH9LkAOQAF9LgABRC4AD7QuAA+ + LwC4ACQvuAAMLzAxEzIeAhUUDgQjIiY1NDY3PgM1NC4CIyImNTQ+AjcyHgIVFA4CIyImNTQ2 + Nz4DNTQuAjU0Nt0VMiseFiQvMTIUDhIfDiQtGAkKFiMZCwUGDhe+H0xALB0vOx8OFCANEhcO + Bi43LgwBDClMbEIfQkA5KxkiDQwbDiI2NDklFTs1JRIIBA8QDF44WnM6Q2lJJg0MDRgQFyQp + MiVIYEMzGwgQAAADAQL/2QhcAPwAGwArAEMBNLoAHwAmAAMrugAvADcAAyu6AAMADQADK0EF + ANoADQDqAA0AAl1BGwAJAA0AGQANACkADQA5AA0ASQANAFkADQBpAA0AeQANAIkADQCZAA0A + qQANALkADQDJAA0ADV1BGwAGAB8AFgAfACYAHwA2AB8ARgAfAFYAHwBmAB8AdgAfAIYAHwCW + AB8ApgAfALYAHwDGAB8ADV1BBQDVAB8A5QAfAAJdQQUA2gA3AOoANwACXUEbAAkANwAZADcA + KQA3ADkANwBJADcAWQA3AGkANwB5ADcAiQA3AJkANwCpADcAuQA3AMkANwANXbgAAxC4AEXc + ALgAAC+4ABwvuAAsL7gAAEVYuAAKLxu5AAoACD5ZuAAARVi4ACQvG7kAJAAIPlm4AABFWLgA + NC8buQA0AAg+WTAxJTIWFRQOBCMiJjU0PgI3NjMyFjMyPgIlMhYVFA4CIyI1NDY3PgEFMhYV + FA4CIyImNTQ+Ajc+Azc+AQgfFSgbKjMyKgsTEgYMFA8PCAcJCAcUGR75uxUoKzxCF0QnMRo+ + A0gWJyk6QhkdLwUNFhEPDw4RDxEg+CYuFjAtKB4SJiAQKy0rERALDxIPBCYuIkU4JD4uVCoW + FwQmLiBGPCcqIBAlJiMPDQcCBAsMFQAAAAEACAIhAs8FiwBEAJS7ACwABAA2AAQrQSEABgAs + ABYALAAmACwANgAsAEYALABWACwAZgAsAHYALACGACwAlgAsAKYALAC2ACwAxgAsANYALADm + ACwA9gAsABBdQQMABgAsAAFxQQUAFQAsACUALAACcbgALBC4ABPQuAATL7gALBC4ACXQuAAl + L7gANhC4ADvQuAA7LwC4AAsvuAAxLzAxEzQ+Aj8BND4CMzIeAhUUBgc+AzMyHgIVFAYjIg4C + Bw4FFRQOAiMiLgI1ND4CNw4BBwYHIi4CCAobLiS4CA0SCgkYFQ4EAihKPSoIERsSCiMUBitB + Uy0BAgIDAgILFB4TCw8IAwIEBQM5XiMpIgwOCQMEPQ8VEQ4HFzRXPyMUHyUQFEEiBAkGBAwR + EwgPDQUHCwYZVGNnWD8JDyAaERwuPSE6WlRXNwkRCAkICw8RAAEACAExAs8FiwBnAHW7AGMA + BgBBAAQruABBELgAWNy4AAPQuABjELgADdC4AA0vuABjELgAEtC4ABIvuABBELgALtC4AC4v + uABBELgAMdC4ADEvuABjELgAS9C4AEsvuABjELgATtC4AE4vuABjELgAYNC4AGAvALgAFy+4 + AEYvMDEBMhYVFA4CBw4DBw4DFRQOAiMiLgI1NDY1DgEjIiY1NDYzMhYzMjY3NDY3DgEHBgci + LgI1ND4CPwE0PgIzMh4CFRQGBz4DMzIeAhUUBiMiDgIHFAYHPgMCuA4JCw4OBAsoPlg7AgIB + AQsUHhMMDgkDASdiMiwqDA8QIh8RTkoFBTleIykiDA4JAwobLiS4CA0SCgkYFQ4EAihKPSoI + ERsSCiMUBitBUy0CAi9bTTYDgQsHBw0LCAIGEhYYDEB7Y0MIDyAaET1hej0XKxUHDiUXERII + Cws5gk8JEQgJCAsPEQYPFREOBxc0Vz8jFB8lEBRBIgQJBgQMERMIDw0FBwsGIotXChIOCQAA + AAEBFAPzA30F5QApABUAuAADL7gAHy+6ABgAHwADERI5MDEBPgEzMhYXHgMXHgEVFA4CIyIu + AicOAwcGIyImNTQ2Nz4DAi0LJRQRHgYPKzAyFhQRCxIXCwszQEMZGD9HTSUWDw4NEBEPO0dK + Bb4UEw8RKkg6LQ8OHA0MFA8JJkZgOy9fXVgoFx0VFzITEEJWYwAAAAAEADn+mgkQBXUAXwCC + AJkA1QKEuwAPAAQAVgAEK7sAsAAHAJoABCu7AMwABgC6AAQruwCLAAQAYAAEK7sAdwAEAJcA + BCtBIQAGAA8AFgAPACYADwA2AA8ARgAPAFYADwBmAA8AdgAPAIYADwCWAA8ApgAPALYADwDG + AA8A1gAPAOYADwD2AA8AEF1BAwAGAA8AAXFBBQAVAA8AJQAPAAJxugBJAFYAdxESOUEFABoA + YAAqAGAAAnFBIQAJAGAAGQBgACkAYAA5AGAASQBgAFkAYABpAGAAeQBgAIkAYACZAGAAqQBg + ALkAYADJAGAA2QBgAOkAYAD5AGAAEF1BAwAJAGAAAXG6AHIAVgB3ERI5QQUAGgCXACoAlwAC + cUEhAAkAlwAZAJcAKQCXADkAlwBJAJcAWQCXAGkAlwB5AJcAiQCXAJkAlwCpAJcAuQCXAMkA + lwDZAJcA6QCXAPkAlwAQXUEDAAkAlwABcUEhAAYAsAAWALAAJgCwADYAsABGALAAVgCwAGYA + sAB2ALAAhgCwAJYAsACmALAAtgCwAMYAsADWALAA5gCwAPYAsAAQXUEDAAYAsAABcUEFABUA + sAAlALAAAnFBBQAaALoAKgC6AAJxQSEACQC6ABkAugApALoAOQC6AEkAugBZALoAaQC6AHkA + ugCJALoAmQC6AKkAugC5ALoAyQC6ANkAugDpALoA+QC6ABBdQQMACQC6AAFxuAB3ELgA19wA + uAAqL7gAPC+4AABFWLgAkC8buQCQAAg+WbgAAEVYuAC1Lxu5ALUACD5ZuwAiAAIACAAEK7sA + EQABAFMABCu4ACIQuAAA0LgAAC+6AEkACAAiERI5ugByAFMAERESObgAkBC5AH4AAfS4ANHQ + MDEBMh4CFRQGBw4FFRQzMj4ENTQuAjU0PgIzMhYXPgMzMhYVFAYHDgUHDgMjIiY1NDY3PgU3 + DgEHDgUjIiY1ND4CNz4DATQ+BjMyHgIVFAYPAR4DFRQOBCMiLgIBLgEnDgMVFB4CMzI+BDU0 + JgE0PgQzMh4CFRQGBw4FFRQeAjMyPgI1NC4CJy4BNTQ2MzIXHgMVFA4CIyIuAgLfDxoSChAS + JHSEh21EIyJ7kJV6TQYGBggWKSEXHwg5YU05EREUKyMhboqcn5pBLS0aFRULESY1NIeXnZWE + MiZiNRdni6WooUI4OzlabTQqbGlbA1YvTWRqaFY8CQ4kIRYXGhcTLikbJkJbanU7OGVMLQJN + DhgHQpaAVBkoNBsfT1NPPyYb+r4wTF1ZShQOJCAWFxofSEhENB8RJj4tKWZZPQwSFQgTIRMR + DRESNDAiRXOVTzhmTC0FLw8XGw0QFQICMU1eYVohGy5KXFpQGgQRExIHDCIgFxgVCSksISkl + F1o/PJq30ePyfVZzRh4oJzKgamrV0c3CtlMTJAs0d3ZtVDJAOypmaWImH0I3JPtkP3pyaFpI + MxwJDhMKFRYODBVHWWc2N2xhUz0iGz1gAecTHQ4pdYuaTh4mFQcVLERcdkkuTP53RYN1Y0co + CQ4SChQaDA8wQExSVyssPSYRM2KOXD9eRSwMGikPFSAMDUVkfkWBv30+Gz1gAAAA//8ATv/b + BZEHJQImADQAAAAHAN4A0QE5AAEAOQBqAv4DewAxAB0AuAAAL7sAEwABAB0ABCu4ABMQuAAW + 0LgAFi8wMQEyFRQOAgcOAwceBTMyNjMyFRQOAiMiLgQnLgE1NDY3PgE3PgMC5RkPGB4PNXN0 + dDcOPVFcWk8cER4KDiAsKwwhNzhCWHZRIhgjH4X+eRsjGBADex8LGhwcDS5SSUIeDS81Nywc + Bw0RJR8UDBonOEgtEykYHyQTUJJLERgQBwAAAAADADn/5wmtBUgAcQCSAMIBrbsAhQAGAGAA + BCu7ADMABwBKAAQruABKELgAANC4AAAvuABKELgAA9C4AAMvuAAzELgAJtC4ACYvuAAzELgA + K9C4ACsvuAAzELkAVAAE9LgAT9C4AE8vQSEABgCFABYAhQAmAIUANgCFAEYAhQBWAIUAZgCF + AHYAhQCGAIUAlgCFAKYAhQC2AIUAxgCFANYAhQDmAIUA9gCFABBdQQMABgCFAAFxQQUAFQCF + ACUAhQACcbgAVBC4AI/QuACPLwC4AAYvuAAARVi4AEcvG7kARwAIPlm4AABFWLgAWy8buQBb + AAg+WbsAFgABAB8ABCu7AGgAAwByAAQruwCzAAIAfQAEK7oAAAByAGgREjm4AHIQuAAm0LgA + Ji+4AEcQuQA2AAL0QSEABwA2ABcANgAnADYANwA2AEcANgBXADYAZwA2AHcANgCHADYAlwA2 + AKcANgC3ADYAxwA2ANcANgDnADYA9wA2ABBdQQMABwA2AAFxQQUAFgA2ACYANgACcboAVABH + AAYREjm4AH0QuAB60LgAei+4ADYQuACI0LgAiC+4AH0QuACT0LgAky8wMQEuATU0NjMyHgIX + HgEXNz4FMzIeAhUUBisBIg4EBx4DFRQGFAYUBh0BFBYzMiwCNzYzMhYVFAcGDAIjIiY1ND4C + NTQ+AjcOBSMiLgI1NBI3PgMzMh4CFx4DByIOAgcOASMiJiMiBgcOAxUUFjMyPgQ3Jy4BBSIO + BAcOBSMiLgI1ND4CMzI+Ajc+ATMyHgIVFA4CIyImNTQmBJ4DAw0RBhYWEwUDBQIdIlxpbmle + IzBiUDMcEZwqbXqAd2glAwQDAgECARsgeQETARcBDXMNCQsJD3H+8v7Y/sebTEEHCQgBAQEB + LHWKmqKlUDdnTzDByVGXg2slEh8ZEgUIHCMmjBVPV1EZFjYVBQsFEykdUoZeND5RSrW8tZZo + EQYTUwScDT5QWlRFExNIWGBWQg8XGw0DAQgRDw9Ob4lLkNNLJTAcCgwPDwMGDwgEeyY3Fykw + EhshDgoYDgcGDQsLBwUNFyASEwoKEBQTEAUgQDszEw5MYm9kThHKJBQpSWM6BgwIEwpTglgu + QUIQKS0uFg88TFYqSY19aUwrHEFrUIsBWbxLbEUhCQwMAgUICg5IEB8vHhopAx0YRJmalUBU + WEJxl6myVZMsMMoLEBQTEAQEEBMUEQoMFBYLCxINBxQdIg4cFwkSGRAQFw8HBw8LBgD//wAK + /2IGjgclAiYAOwAAAAcA3gE9ATkAAQBKBBkCOwXFACgAdrsADQAFACQABCtBIQAGAA0AFgAN + ACYADQA2AA0ARgANAFYADQBmAA0AdgANAIYADQCWAA0ApgANALYADQDGAA0A1gANAOYADQD2 + AA0AEF1BAwAGAA0AAXFBBQAVAA0AJQANAAJxALgAAC+7ABIAAgAfAAQrMDEBMh4CFRQGBw4D + FRQeAjMyPgIzMhYVFA4CIyIuAjU0PgIBGxIgGQ8ZDhM4MyQWJC8YOVM5IgcYCCNCXjs+Wzwe + Kz9JBcULDxIGDAYGCSY2QyUTGhAHDQ8NEQ8SIBkPFC1JNiZURS0AAAABACkD9gG4BhkAIwB+ + uwADAAUAFQAEK0EFABoAFQAqABUAAnFBIQAJABUAGQAVACkAFQA5ABUASQAVAFkAFQBpABUA + eQAVAIkAFQCZABUAqQAVALkAFQDJABUA2QAVAOkAFQD5ABUAEF1BAwAJABUAAXG4AAMQuAAl + 3AC4AAovuwAAAAEAGAAEKzAxATIWFRQOBCMiJjU0Njc+AzU0JiMiDgIjIjU0PgIBMz5HKkNR + T0QTFxQUGStdTjIiHREaFhYMIBgoNwYZS0c2ZllKNR0VDhQdDBQ2Q08sHyUJCwkfDygkGgAC + ACkDiwLbBc8AJABJARG7AC8ABQBFAAQruwANAAUAIAAEK0EFABoAIAAqACAAAnFBIQAJACAA + GQAgACkAIAA5ACAASQAgAFkAIABpACAAeQAgAIkAIACZACAAqQAgALkAIADJACAA2QAgAOkA + IAD5ACAAEF1BAwAJACAAAXG4ACAQuAAY3LgARRC4ACjcQSEABgAvABYALwAmAC8ANgAvAEYA + LwBWAC8AZgAvAHYALwCGAC8AlgAvAKYALwC2AC8AxgAvANYALwDmAC8A9gAvABBdQQMABgAv + AAFxQQUAFQAvACUALwACcbgADRC4ADnQuAA5LwC4AAAvuAAlL7sANAACAD4ABCu7ABIAAgAb + AAQruAASELgAFdC4ABUvMDEBMh4CFRQGBw4DFRQeAjMyNjMyFhUUBiMiLgI1ND4CJTIWFRQO + BBUUHgIXFjIeARUUDgIjIi4ENTQ+AgI1EiAZDxkOEzczJBEcIhEzUg4REEo5Plw8His/Sf73 + ExQZJiwmGTJHSxkUJx8TFB8oFBhCRkU2IjdLTQXFCw8SBgwGBgkmNkMlExoQBw0SDyMaFC1J + NiZURS0KGRQTGRsjNlA7LTMbCQECBg0ODBkTDAQOHjNON1yEVCgAAgAXA74C+AZCACQARgDa + uwADAAUAFQAEK7oAKgBEAAMrQSEABgADABYAAwAmAAMANgADAEYAAwBWAAMAZgADAHYAAwCG + AAMAlgADAKYAAwC2AAMAxgADANYAAwDmAAMA9gADABBdQQMABgADAAFxQQUAFQADACUAAwAC + cbgAKhC5ADwABvRBBQDaAEQA6gBEAAJdQRsACQBEABkARAApAEQAOQBEAEkARABZAEQAaQBE + AHkARACJAEQAmQBEAKkARAC5AEQAyQBEAA1duAAqELgASNwAuAAlL7gAMS+7AAAAAQAYAAQr + MDEBMhYVFA4EIyImNTQ2Nz4DNTQmIyIOAiMiJjU0PgIlMh4CFRQOBCMiJjU0Njc+AzU0Jicu + AzU0NgEhPkcqQ1JPQxMXFBQZK11OMiMdERkXFQwPEhgpNwFXHzktGzBNYmJZHxcUEhw/eF46 + KiMHGxoUNgYZS0c2ZllKNR0VDhUcDBQ2Q08sHyUJCwkPEA8oJBopITZFI0d6ZU41HBUOFiMF + C0BVYSw3Ow0CCAsPCx0rAAAAAAEAUABmA3cDtgAeAAsAuAARL7gAAC8wMQEyHgIzMh4CFRQO + BCMiLgI1ND4GArQZEQoQGBgmGw5EboyPhTEdOi8eKERaZGlgVAO2ExcTIDZGJWCjhGVDIyA6 + UzM4cm1lWUo0HQABAGoBVASPAisAHwAXALsADAADABkABCu4ABkQuQAFAAH0MDETMh4CMzI+ + BDMyFhUUBgcOBSMiNTQ+An0FCRMlIieHpbiwnDcRCx0uEWeSsratRnUCBAgB4wYIBg4UGBQO + EAsTKw8GFRgaFQ1CCBoZEgAAAAEAagFUBkQCUAAoABEAuAATL7sABQABACIABCswMRMyHgIz + Mj4CNz4HMzIWFRQGBw4HIyI1ND4CfQUJEyUiDUNPShUgeZuytKuMYhERDB4uDGebxNXYw6M0 + dQIECAHjBggGBggJAwQOEBIRDwwHEAsSLBAEERYaGhcSC0IIGhkSAAAAAAEAdAPqA+0FigAo + AB8AuAAPL7gAJC+7AAoAAQAXAAQruwAFAAEAHAAEKzAxEz4DMzIWFxYzMjY3NjMyFRQGBw4B + IyInLgEjIg4CBw4BIyI1NDaNJExLSiMnRRwcMTOOWycUDBkaYaZASCkeMBoSKDE+KBEhCxgL + BEg3XEIlMzg5bFomEA40IXt5RzM0GDBJMBQSHAwhAAAAAgAOAqQFkQXHAGcAnQFvuwB5AAYA + hgAEK7sABgAGAA4ABCu7AEoABQBXAAQruAAGELgAANC4AAAvuAAOELgAENC4ABAvuABKELgA + PtC4AD4vuABKELgARdC4AEUvQQUAGgBXACoAVwACcUEhAAkAVwAZAFcAKQBXADkAVwBJAFcA + WQBXAGkAVwB5AFcAiQBXAJkAVwCpAFcAuQBXAMkAVwDZAFcA6QBXAPkAVwAQXUEDAAkAVwAB + cbgAVxC4AFrQuABaL0EhAAYAeQAWAHkAJgB5ADYAeQBGAHkAVgB5AGYAeQB2AHkAhgB5AJYA + eQCmAHkAtgB5AMYAeQDWAHkA5gB5APYAeQAQXUEDAAYAeQABcUEFABUAeQAlAHkAAnG4AHkQ + uAB00LgAdC+4AIYQuACJ0LgAiS+4AEoQuACf3AC4ADYvuABPL7sAJgABAGMABCu6AAAATwA2 + ERI5ugBaAE8ANhESOboAiQBPADYREjm4ACYQuACM0LgAjC8wMQEOAx0BFAYjIi4CNTY3PgE/ + AS4BNTQ+AjMyHgIXHgMzMj4CNz4DNz4BNz4BMzIeAhUUBgceBRUUDgIVFA4CIyImNTQ+AjU0 + JicOAQ8BDgMjIi4CJz4BMzIVFA4EBw4DFRQeAhUUBiMiLgI1NDY3DgEjIi4CNTQ2MzI2Nz4B + MzIWFQNmAQEBARcUCBcVDwQFBAoFEQ0KCQ8UDAwRCwcCDCs1ORkPJSQgCwkeIyMOBg0CBQ8S + BA0NCQwMAQICAgIBAgICFBoaBhEQBQcFAgINHgsGEScnIw0gQD037wsbER0kOUhIQRUCAwIB + DA4MDxcPJSAVBQUuWSUbLSITFxgwiFUIHBEYEQSeFj08MQvPHRQPGyUXNjYuai2mFyILDhsW + DQ0TGAwcRj0qERgcCwkhJycPFiIGDRITGhsIDSoRETlDRj8yDBRITEENEBoSCRkWFUNVZTgx + YCMTJQ4IEyQbEBYkLOEFCBgLHB4eGRMDHD46Lww0W0gyChQbJ051TiplMwsLDxQWCBQREQ42 + QzotAAAA//8ASP/TBAwF7AImAFQAAAAGAN4KAAAAAAEATACCAykDdwAvAA8AuAAhL7gAAC+4 + AAMvMDE3DgEjIi4CNTQ+Ajc+ATcuBScuAzU0PgIzMh4CFx4BFRQHDgPbCCYWDhsVDRYmLxpg + 24MOP1JeWU4YDSAbEhQfKBUnUHOjeiIXOUaXjn2JAgUDCQ8LExcOCwkglWMNKzI0LyQJBA0O + EQkPFQ0HHD1gQxMoGT0wOmhRNQAAAwA1/+MHugPFAEsAaQB6Ani7AFsABAA4AAQruwARAAcA + LgAEK7sABQAFAHEABCtBIQAGABEAFgARACYAEQA2ABEARgARAFYAEQBmABEAdgARAIYAEQCW + ABEApgARALYAEQDGABEA1gARAOYAEQD2ABEAEF1BAwAGABEAAXFBBQAVABEAJQARAAJxuAAR + ELkARAAF9LoADwARAEQREjm4AEfQuABHL0EhAAYAWwAWAFsAJgBbADYAWwBGAFsAVgBbAGYA + WwB2AFsAhgBbAJYAWwCmAFsAtgBbAMYAWwDWAFsA5gBbAPYAWwAQXUEDAAYAWwABcUEFABUA + WwAlAFsAAnG4ABEQuABl0LgAZS+6AGoAEQBEERI5QQUAGgBxACoAcQACcUEhAAkAcQAZAHEA + KQBxADkAcQBJAHEAWQBxAGkAcQB5AHEAiQBxAJkAcQCpAHEAuQBxAMkAcQDZAHEA6QBxAPkA + cQAQXUEDAAkAcQABcbgABRC4AHzcALgAAEVYuAApLxu5ACkACD5ZuAAARVi4ADMvG7kAMwAI + Plm7AD8AAgB0AAQruAA/ELgAANC4AAAvuAApELkAFgAD9EEhAAcAFgAXABYAJwAWADcAFgBH + ABYAVwAWAGcAFgB3ABYAhwAWAJcAFgCnABYAtwAWAMcAFgDXABYA5wAWAPcAFgAQXUEDAAcA + FgABcUEFABYAFgAmABYAAnG4AD8QuQBMAAP0uAAzELkAXgAC9EEhAAcAXgAXAF4AJwBeADcA + XgBHAF4AVwBeAGcAXgB3AF4AhwBeAJcAXgCnAF4AtwBeAMcAXgDXAF4A5wBeAPcAXgAQXUED + AAcAXgABcUEFABYAXgAmAF4AAnEwMQEyHgIVFA4EIyImJwYVFB4CMzI+Ajc2MzIVFAYHDgUj + Ii4CNQ4DIyIuAjU0PgQzMh4CFRQGFT4DBSIOAgcOAwcOAxUUFjMyPgQ1NC4CEz4FNTQmIyIO + BAbRNEouFliOsLGeNR0nBh8XNFU+Wbatn0IZDAoPDx5WaHmCikU+gWhCSKSjmDs+XT0eS3+p + u8NbPF1AIQJEnqCY/PgmSEM9HBQsMDEZO2dMK0I5Opymo4BPFycyrVqzo4xnOikjLG96fnVl + A74VJTIdMWpkWUMnJBdGQSM/LxswUGo7Fg0LJRMmV1ZPPSQeQ25QQmpLKBo5WUBfuqiQaTwl + QFYxCxULPWRIJ3gbKjUaEg4KDhIqaXN3OTlANVt8jplMJzchD/6oEzY9QTw1ExEeGjBEVGIA + //8AG//dBFQF7AImAFsAAAAGAN4lAAAA//8AHf7wBUwGnAImADoAAAAHAIMAkwEJAAIBE/5K + AisD1wAgADYApLsAAwAHABQABCtBIQAGAAMAFgADACYAAwA2AAMARgADAFYAAwBmAAMAdgAD + AIYAAwCWAAMApgADALYAAwDGAAMA1gADAOYAAwD2AAMAEF1BAwAGAAMAAXFBBQAVAAMAJQAD + AAJxuAADELgAANC4AAAvuAADELkAGwAH9LgAFBC4ACTcuAAUELgALNC4ACwvALgAIS+4AA8v + uwApAAEAHgAEKzAxARYUFRQOBAcOAyMiLgI1ND4ENz4BMzIWEzIWFRQOAiMiJjU0Njc+Azc+ + AQHRAQMGCQwPCQgWGRoMChAMBgcMDQwJAgUWECU1HxUoKTpCGR0vFyIPDw4RDxEfAdUMIhQ0 + kJ+fhmAPDh0YDxAlPS0xf4iJd1sXVWQ8AccmLiBGPCcqICFOHg0HAgQLDBUAAgA1/3kEQgVg + AE0AYgFpuwBeAAcAQwAEK7sAMgAEADoABCtBIQAGADIAFgAyACYAMgA2ADIARgAyAFYAMgBm + ADIAdgAyAIYAMgCWADIApgAyALYAMgDGADIA1gAyAOYAMgD2ADIAEF1BAwAGADIAAXFBBQAV + ADIAJQAyAAJxuAAyELkASAAF9LkAGAAG9LgABdC4AAUvuAAYELgACNC4AAgvuAAyELgAHtC4 + AB4vuAAyELgAL9C4AC8vuAA6ELgAPdC4AD0vuAA6ELgAUdC4AFEvuABIELgAVNC4AFQvuABI + ELgAWdC4AFkvQSEABgBeABYAXgAmAF4ANgBeAEYAXgBWAF4AZgBeAHYAXgCGAF4AlgBeAKYA + XgC2AF4AxgBeANYAXgDmAF4A9gBeABBdQQMABgBeAAFxQQUAFQBeACUAXgACcQC4AAAvuAA1 + L7oACAA1AAAREjm6AB4ANQAAERI5ugA9ADUAABESOboAWQA1AAAREjkwMQEyHgIVFAYHPgMz + MhYVFA4EDwEVFA4CBz4DNzYzMhUUBgcOAwcOARUUBiMiLgI1NDY3DgEjIiY1ND4CNzU0PgID + MjY3PgE3PgM3DgMVFB4CAhAJGRUPBAItX1lOHRgfKUFSUkoZGAMFBgNCgnltLRYNCxQVKWd6 + ikwDAyknCQ0IBAEBMGIzZmNGdptVCA0R7CpXLQEHAgMDAwIBNWdSMwoXIwVgFCIxHB9pPB01 + KBgYFxkyMi0mHQgQJxhtkadRHlBaXy0WEA4uGjNrZVoiWH0TNy8eNUgqFy8YDg9eZVKtqJ1D + iypfTzT7lg4OKkwgIldgZzMzen15Mg8dFw0AAAABAAr/YgWGBYEAdgI4uAB3L7gAeC+4AHcQ + uAAn0LgAJy+4ABnQuAAZL7gAJxC4ACTQuAAkL7gAeBC4ADHcuQA+AAb0QQUAGgA+ACoAPgAC + cUEhAAkAPgAZAD4AKQA+ADkAPgBJAD4AWQA+AGkAPgB5AD4AiQA+AJkAPgCpAD4AuQA+AMkA + PgDZAD4A6QA+APkAPgAQXUEDAAkAPgABcbgAJxC5AEYAB/RBBQDmAEYA9gBGAAJdQQMABgBG + AAFxQR0ABgBGABYARgAmAEYANgBGAEYARgBWAEYAZgBGAHYARgCGAEYAlgBGAKYARgC2AEYA + xgBGANYARgAOXUEFABUARgAlAEYAAnG4AEnQuABJL7oAXwAnAEYREjkAuAAML7gAAEVYuAAs + Lxu5ACwADj5ZuAAARVi4AAAvG7kAAAAIPlm7AF8AAwAFAAQruwBMAAEAWQAEK7gATBC4ACTQ + uAAkL7gALBC5AEEAAvRBBQAZAEEAKQBBAAJxQSEACABBABgAQQAoAEEAOABBAEgAQQBYAEEA + aABBAHgAQQCIAEEAmABBAKgAQQC4AEEAyABBANgAQQDoAEEA+ABBABBdQQMACABBAAFxuABM + ELgASdC4AEkvuABZELgAXNC4AFwvuAAAELkAZgAD9EEhAAcAZgAXAGYAJwBmADcAZgBHAGYA + VwBmAGcAZgB3AGYAhwBmAJcAZgCnAGYAtwBmAMcAZgDXAGYA5wBmAPcAZgAQXUEDAAcAZgAB + cUEFABYAZgAmAGYAAnEwMQUiLgIjIg4EIyImNTQ+Ajc+AzcuAzU0NjMyFhc2NDU0Ej4BMzIe + AhUUDgIjIiY1ND4CNTQmIyIOAhUcAQcWMjMyPgIzMhYVFA4CIyImJw4BBx4FMzI+Ajc2MzIV + FAYHDgMD51milo5DITo1MTEzHBogNEdLFxY0MCcLPWdKKh8aEHdhAj9jeDoiOy0aChckGhEY + BwkIDxMsVEEoAho3HZDGfkALFw5gn81uIkMgDi8dJFVdZGlsNy1VU1MqGw8SFxk6X1dSMTI8 + Mig8RTwoISsiRkM8GRguR2tWCBYYGAodJxgLDyISpQEIuWMhMDgXF0M/LRQUCiAmKRQfLEmS + 2pEdNRkCHiMeGCIRNjQmAgJeeyUCGSQnIhYGEh4YDxEMJRUxNxwHAAACAH7/mwQuBGcAVQCJ + ARm4AIovuACLL7gAINy4ABnQuAAZL7gAIBC5AFYABPRBBQAaAFYAKgBWAAJxQSEACQBWABkA + VgApAFYAOQBWAEkAVgBZAFYAaQBWAHkAVgCJAFYAmQBWAKkAVgC5AFYAyQBWANkAVgDpAFYA + +QBWABBdQQMACQBWAAFxuAAq0LgAKi+4AIoQuABO0LgATi+4AEjQuABIL7gAThC5AHMAB/RB + IQAGAHMAFgBzACYAcwA2AHMARgBzAFYAcwBmAHMAdgBzAIYAcwCWAHMApgBzALYAcwDGAHMA + 1gBzAOYAcwD2AHMAEF1BAwAGAHMAAXFBBQAVAHMAJQBzAAJxugB2AE4AGRESOQC4ABYvuABC + L7oAdgBCABYREjkwMRMmNTQ2MzIWFx4BFz4DMzIWMz4BMzIWFRQGDwEeARUUDgIHHgMVFA4C + IyImJy4DJw4DKwEOAQcGIyImNTQ2Nz4BNy4BNTQ+AjcuAQU0JicOASMiJicOAQcOAwcVFAYj + IiYnDgMVFBYXPgEzMhYXPgE3NDYzMhYXPgPTFxkSFCwOCkIxMWptazMJEQlAQQkPGgkMMiIk + J0RbNCQ0IxAOFhsMCREFBhwnMxwwYFxSIgQuTBsTERARCQgEHxkfHx83TS4xSwLaFBIIIhQa + JQUqTCEMGhscDiofCA0GIzsqGA0MCBoRFyMENoVFIxoIEQYqSTYfA7oeFhESFxcRVzwkOyoX + AkpAKxwOIA01HE8uQnlvYyosRDUqExUiGg4JCQopOUcoHCweED5tLyE6Jxo1FwouIBdPPDdu + aWIsR2e2ICwODQwTEA49HQsLBwYEBBwoAQMhSk1NJBciDQ0QHRYJOisjLQUFIk5SVAAAAAAB + AB3+8AVMBWYAiADGuwAGAAcADQAEK0EhAAYABgAWAAYAJgAGADYABgBGAAYAVgAGAGYABgB2 + AAYAhgAGAJYABgCmAAYAtgAGAMYABgDWAAYA5gAGAPYABgAQXUEDAAYABgABcUEFABUABgAl + AAYAAnG4AAYQuAAD0LgAAy+4AAYQuQALAAT0uAAS0LgAEi+4AAsQuAAf0LgAHy+4AAsQuAAi + 0LgACxC4ADbQuAA2L7gABhC4AGjQuABoL7gABhC4AHnQuAB5LwC4AAsvuABZLzAxJQ4BBwYU + FRQOAiMiNTQ3PgE3DgEjIiY1ND4ENzY0NQ4FIyIuAjU0Njc+Azc1LgU1NDYzMhYXHgMXHgEz + MjY3PgM3PgMzMhYVFA4EBw4DBxU+ATMyHgIVFA4CBw4BDwE+AT8BPgEzMhYVFA4CA8sqgkoC + GSQnDyQOBgcDbKUoNzwKHztgi2ECIlNXVkk3DBcaDQMXJg9WeI9IPYWBdVk0FhcdJRQtWGFv + RBcpEylAFz1rWUkdIjcsIw4MFyc9S0lAEhNDUFYnaaE+JTAcChkiIwtptT4GVZYylQcMBgoR + K0VX8A0fEEd2IDZWPB9AJkAdjVoWFB4kEBcSDxASDTxzNAcTEhIOCAwUFwsWGwwFFBseDysO + R2Fzc2sqGBMmHD9qXFAkDAojECpcWU4bIDkrGRAfCjZHUk5BExRDSEASHREQBwwSCg4PCAQC + ESwP7g0dDisCAgwPEioqJQAAAAIA1v5YAVkGeQAgADwAvLsAKwAFADgABCtBIQAGACsAFgAr + ACYAKwA2ACsARgArAFYAKwBmACsAdgArAIYAKwCWACsApgArALYAKwDGACsA1gArAOYAKwD2 + ACsAEF1BAwAGACsAAXFBBQAVACsAJQArAAJxuAArELgABdC4AAUvuAA4ELkADwAH9LgADNC4 + AAwvuAA4ELgAHNC4ABwvuAAPELgAJtC4ACYvuAArELgAMNC4ADAvALgAIS+4ABIvuwAzAAMA + AAAEKzAxATIeAhUUHgQXFhQVFAYjIiYnLgQ0NTQ+AhMyHgIVFA4CFRQeAhUUBiMiLgI1ND4C + AQwSFQsEAgQFBQQCASYaHRMEAQICAgEBCRMYDRkTCwgLCAIDAhAZFRoPBQcOFwIlGS09IyBt + got+ZBoIDgg9Njk8FGKClo57JyI5KRYEVBUgKBIJRWiDSCdmXkoKLDswTmIyl++mWAAAAgBC + /4kDfwUjAFMAbQDSuwAbAAUAMQAEK0EFABoAMQAqADEAAnFBIQAJADEAGQAxACkAMQA5ADEA + SQAxAFkAMQBpADEAeQAxAIkAMQCZADEAqQAxALkAMQDJADEA2QAxAOkAMQD5ADEAEF1BAwAJ + ADEAAXG4ADEQuAAF0LgABS+4ABsQuAAV0LgAMRC4AGjQuAAbELgAb9wAuAAiL7gAAC+7ABIA + AgBtAAQruwBjAAIAOQAEK7oADQBtABIREjm6AEcAIgAAERI5ugBeADkAYxESObgAYxC4AGXQ + uABlLzAxATIeAhUUBgcOAwc+AzMyFhUUBgceARUUDgQjIi4CNTQ2Nz4FNTQmJwYjIiYnIyIO + AiMiJjU0PgI3DgEjIiY1ND4EAxYVFAYHDgMHPgMzMhc+ATU0LgIjAt0SHRQLFCNLmoRjFCJc + ZWUrgHgtHyYmSnWOiXIeGR4QBSAfRIN2ZEkpGR0cFxIVAgxImo14JRwXNFNoNShHHBwnQGeB + gXRIAhUjRYFpSw8ie4uFLComKh4QJTwtBSMPFRkJFBkGDjtOXC4JEAwGWFoqVyMVSTFQlIJq + TCoXHh0GHBUHDzdHVVpcLBkhCBERDBsgGyUlJE5LRBsGCCc3LGBaUT0k/jsEBhQaBQs1REsh + CRwZEgYiPh0eJxgJAAAAAgECBLQDPQWTAA0AGwD1uAAcL7gAHS+4ABwQuAAJ0LgACS+5AAMA + B/RBIQAGAAMAFgADACYAAwA2AAMARgADAFYAAwBmAAMAdgADAIYAAwCWAAMApgADALYAAwDG + AAMA1gADAOYAAwD2AAMAEF1BAwAGAAMAAXFBBQAVAAMAJQADAAJxuAAdELgAEdy5ABcAB/RB + BQAaABcAKgAXAAJxQSEACQAXABkAFwApABcAOQAXAEkAFwBZABcAaQAXAHkAFwCJABcAmQAX + AKkAFwC5ABcAyQAXANkAFwDpABcA+QAXABBdQQMACQAXAAFxALsAAAADAAYABCu7AA4AAwAU + AAQrMDEBMhYVFAYjIiY1ND4CJTIWFRQGIyImNTQ+AgFYHx8vJR8hDRYgAbsfHi4mHiENFiAF + TikdJi4mIBAeGA5FKB0mLiUgEB4YDgADAC3/nAXNBUIAIgBIAHwBWLsAOAAFABkABCu7AF0A + BwB2AAQruwANAAUARAAEK0EhAAYAOAAWADgAJgA4ADYAOABGADgAVgA4AGYAOAB2ADgAhgA4 + AJYAOACmADgAtgA4AMYAOADWADgA5gA4APYAOAAQXUEDAAYAOAABcUEFABUAOAAlADgAAnFB + BQAaAEQAKgBEAAJxQSEACQBEABkARAApAEQAOQBEAEkARABZAEQAaQBEAHkARACJAEQAmQBE + AKkARAC5AEQAyQBEANkARADpAEQA+QBEABBdQQMACQBEAAFxQSEABgBdABYAXQAmAF0ANgBd + AEYAXQBWAF0AZgBdAHYAXQCGAF0AlgBdAKYAXQC2AF0AxgBdANYAXQDmAF0A9gBdABBdQQMA + BgBdAAFxQQUAFQBdACUAXQACcbgADRC4AH7cALsAOwACABQABCu7AAAAAwAjAAQruwBgAAEA + cwAEKzAxATIWFRQGFRQXHgMVFA4DBCMiLgI1ND4CNz4DByIOAgcOAyMiJiMOAQcOAxUUFjMy + PgY1NC4CBz4BMzIWFRQOBAcOBRUUFjMyPgI3NjMyFRQGBw4FIyImNTQ+BASYJTULDR5LQy1f + o9r3/vl+QHZbNzJsq3ppzrWRBRlbY14cDBweHQwGDAYWMSBhmWo4am9Jpq2rnYdjOSBBYvwR + Ig4dICE0QUI8FCBMTEc2ISQmTqijkzgRCwkQESBTY3B7hERSVDxlg42OBUIRHQ0WCAoEDDFO + bEZt7eTOm1sgSntcT7TE0WxehVYokhIjNSMPGxUNBAEeHl67s6dKb3wtUXKIm6WqVDZfRyjA + BQUSFBMoJyUfFwcUQVBZWVYkGCc+YHc5EQ0LJRYoV1VMOyJgUEaRjIFrTgAAAAADADkBIQM1 + BPoAJgBHAFkAlrsAWAAGACAABCu4ACAQuABD0LgAQy9BIQAGAFgAFgBYACYAWAA2AFgARgBY + AFYAWABmAFgAdgBYAIYAWACWAFgApgBYALYAWADGAFgA1gBYAOYAWAD2AFgAEF1BAwAGAFgA + AXFBBQAVAFgAJQBYAAJxALgAAC+7ADYAAwBBAAQruwBIAAIAHQAEK7gAQRC5ACwAAfQwMQEy + Fh0BMzIVFAYHFRQeAhUUBiMiLgInDgMjIiY1ND4EATIeAjMyPgI3PgMzMhYVFAYHDgMjIjU0 + PgITMj4CNz4BNwcOBRUUAq4fHwQ7KCASFxIXFw4jIRsGNHt/fTYzMEJqiIuE/dgFCRMlIg1D + T0oVQGRSRiMRCx4uGWeTt2l0AgQHXRxxhYg1Ag0QEzJvbWJLLAT6FyIHMSVVMDMgZ2hUDBwo + Q2R3MzZjSyxCLTJ7fXVbN/y2BggGBggJAwkQDAgPCxQqEAgeHhZBCRoZEgEGLVBvQy9SHQQQ + QFFcWU4aCwAAAAACADkATgSJA48AMQBkACsAuAAAL7gAGy+7AEYAAQBQAAQrugA/ABsAABES + ObgARhC4AEnQuABJLzAxARYVFA4CBw4BBx4FFx4DFRQOAiMiLgQnLgE1NDY3PgM3PgMFMhYV + FA4CBw4DBx4FMzI2MzIVFA4CIyIuAicuATU0Njc+Azc+AwK+GQ8YHg9r1m0ONENMS0QZDBwZ + ERcgIgwhODg+T2ZEHxsjH0J1cHA+GyMYEAG7Cw0PGB4PNWVlZjYON0dRUUkcER0LDxkmLxUy + VWOBXiIXIh9CdW9vPBsjGBEDjwIcCxocHQ1dlD4PMTk9Ny0NBgkJDAkMEw4IDh8wQ1c2GSIZ + HyQTKElISigSGA8GEA8QCxkcHQ0uRjw3Hw4qMDEnGQYNESUeFCE7VDMSKRkfJBMoQT0+JhEZ + DwcAAQCwAOkEZANzADcAlrsAJwAFAAAABCtBBQAaAAAAKgAAAAJxQSEACQAAABkAAAApAAAA + OQAAAEkAAABZAAAAaQAAAHkAAACJAAAAmQAAAKkAAAC5AAAAyQAAANkAAADpAAAA+QAAABBd + QQMACQAAAAFxuAAAELgAM9C4ADMvuAAnELgAOdwAuAAuL7sAIgABAAIABCu4AAIQuAAY0LgA + GC8wMQEmIyIOAgcOBSMiLgI1ND4CMzI+Ajc+AzMyHgIVHAEOAyMiLgI1ND4CA/4MHR5TVUwX + E0hYYFZCDxcbDQMBCBEPD05viUtIaVNGJiYwGwoDBQkOCgsYFA4CAwMC8gQJDA0FBBATFBEK + DBQWCwsSDgcTHSEPDhAHAgkSGRAzfoJ6XzoGEyIbITxbjAAAAAEAagFUA14CFwAgABcAuwAP + AAMAGgAEK7gAGhC5AAUAAfQwMRMyHgIzMj4CNz4DMzIWFRQGBw4DIyI1ND4CfQUJEyUiDUNP + ShVAZFJGIxELHi4YaJO3aXUCBAgB4wYIBgYICQMJEA0IEAsTKxAIHh4WQggaGRIAAAQALf+c + Bc0FQgAxAGsAkwCqAeC7AHoABQAoAAQruwA3AAUAoQAEK7sADQAFAE8ABCu7AIgABgB0AAQr + ugASACgADRESObgAiBC4AETQuABEL0EHAAkATwAZAE8AKQBPAANdQQUAGgBPACoATwACcUEX + AFkATwBpAE8AeQBPAIkATwCZAE8AqQBPALkATwDJAE8A2QBPAOkATwD5AE8AC11BAwAJAE8A + AXFBBQA5AE8ASQBPAAJdugBnAHQAiBESObgAdBC4AGzQuABsL0EhAAYAegAWAHoAJgB6ADYA + egBGAHoAVgB6AGYAegB2AHoAhgB6AJYAegCmAHoAtgB6AMYAegDWAHoA5gB6APYAegAQXUED + AAYAegABcUEFABUAegAlAHoAAnG6AIIAKAANERI5uACIELgAl9C4AJcvQQUAGgChACoAoQAC + cUEhAAkAoQAZAKEAKQChADkAoQBJAKEAWQChAGkAoQB5AKEAiQChAJkAoQCpAKEAuQChAMkA + oQDZAKEA6QChAPkAoQAQXUEDAAkAoQABcbgADRC4AKzcALsAfQACACMABCu7AAAAAwBUAAQr + uwBHAAIAhQAEK7sAMgABAKYABCu6AGcApgAyERI5ugB1AKYAMhESOboAggCFAEcREjm6AIgA + hQBHERI5MDEBMhYVFAYVFBceAxUUDgIHPgMzMhUUDgIHDgMjIi4CNTQ+Ajc+AwEyHgIVFA4C + Bw4DBxYUFR4BMzI2Nz4DNTQuAiMiDgIHDgMjIiYjIgYHHgEXPgMBLgE1ND4CNxEOAxUUFjMy + PgI3DgEjIiYnFRQOAiMiLgI1Ex4BFz4DNz4DNTQuAiMiDgIEmCU1Cw0eTEItHjhPMA8gIBsK + EyZCVjBTwc7UZkB2WzcybKt6ac61kf7XOGdOLwcSHhcbaoGJOQI6rYEjRyZAbVAsIEFiQhlb + Y14cDBweHQwGDAYXQyQECAMVP01W/skpHg8WGAhQfVcuam9EmaChSxMkEVifQg4VGQoJDgsF + VAYIAyNSTkUWMEAmECAzPh0pVE5DBUIRHQ0WCAkFDDFObEY9f4GBPgQODAkRFSYkIA5Vkms9 + IEp7XE+0xNFsXoVWKP5gGC9GLg4ZGBoPEiorKA8OGw4iLAkIQIyTlko2X0coEiM1Iw8bFQ0E + KioIFA0LGBQN/eMrLREHDw0KAgE1VKeflUJvfCdHYz0DARsgpQ0eGRArPkYbAdUuUycKFhYT + Bw8bGRYKERkRCAkTHgAAAAABAJgEQgOLBQQAIAAXALsADwADABoABCu4ABoQuQAFAAH0MDET + Mh4CMzI+Ajc+AzMyFhUUBgcOAyMiNTQ+AqoFCRMlIg1DT0oVQGRSRiMRCx4uGWeTt2l0AgQH + BNEHBwcGCQkDCRAMCBALEyoQCB4eFkEJGhkSAAACADkCdwPjBUwAHwA0AR24ADUvuAA2L7gA + NRC4ABbQuAAWL7gANhC4AArcugACABYAChESObkAIAAH9EEFABoAIAAqACAAAnFBIQAJACAA + GQAgACkAIAA5ACAASQAgAFkAIABpACAAeQAgAIkAIACZACAAqQAgALkAIADJACAA2QAgAOkA + IAD5ACAAEF1BAwAJACAAAXG4AAXQuAAFL7gAFhC5ACwABPRBIQAGACwAFgAsACYALAA2ACwA + RgAsAFYALABmACwAdgAsAIYALACWACwApgAsALYALADGACwA1gAsAOYALAD2ACwAEF1BAwAG + ACwAAXFBBQAVACwAJQAsAAJxuAAT0LgAEy8AuwAuAAEAEwAEK7sABQADACUABCu6AAIAJQAF + ERI5MDEBMhc+ATMyHgIVFA4GIyImNTQ+Ajc+Axc0JicGBw4FFRQzMj4EAt8VEAYkKhsyJxcv + UW5/ioiBNzg7OVptNCpsaVuLIBEIFyR0hIdtRCMieo6TeEwFLw4RGhMjMyAlWWBjXFE7I0A7 + KmZpYiYfQjckph0dCxMBAjFNXmFaIRstSFtdVwABAET/lAThBNUAZgCiuwAKAAcAZAAEK0Eh + AAYACgAWAAoAJgAKADYACgBGAAoAVgAKAGYACgB2AAoAhgAKAJYACgCmAAoAtgAKAMYACgDW + AAoA5gAKAPYACgAQXUEDAAYACgABcUEFABUACgAlAAoAAnG4AAoQuAAg0LgAIC+4AAoQuQBf + AAT0uQAjAAf0uABfELgASNC4AEgvALgAAC+4ADkvuwBVAAMATQAEKzAxATIeAhUUHgIXPgUz + Mh4CFRQOAgcOAwceARc+AT8BPgEzMhYVFA4CBw4FIyIuAjU0PgI3LgMnDgMjIiY1ND4CMzI+ + BDcyNjMuAzU0NgJaBx8gGAIEBwYoXV1YSDIIFCEYDREbIRELTXWUUQULBjxtKJYGDQYKEStF + Vywobnt/cFgYFSohFC9ssoMBAgUKCT+AenIwHyIlOEEcCzA+SEU8FAICAggKCAMMBNUYLUEo + DC5NdFMKFxcVEAkPFxsMDBINCAMCEx0kEn76gAgYCysCAgsOEisqJgwMGRkXEQoGER0XGBwV + FBIGMnC4jQ4XEgoUEyIlEgMGCg0NDQYCiatmMhIgGwAAAQAnAZMDXAUGAE4AfrsASgAEACgA + BCtBBQAaACgAKgAoAAJxQSEACQAoABkAKAApACgAOQAoAEkAKABZACgAaQAoAHkAKACJACgA + mQAoAKkAKAC5ACgAyQAoANkAKADpACgA+QAoABBdQQMACQAoAAFxuABKELgAUNwAuAAZL7sA + RQADACsABCswMQEOAwclNjMyFhUUDgIHDgcjIi4CNTQ+Ajc+AzU0JiMiDgQVFhUUDgIjIi4C + NTQ+BDMyHgIVFA4CAboXOzw5FgJCEgsQEAcPGBEGP2B3e3ZeOwQMGhcPQWN1M0lpRCARDiJQ + UEs6IwQRFxYFBRMUDidDW2hyOCs8JRAwVXUC7BErLzAWewUUGAkcHBkGAhAWHBwbFA0QGiAP + IFZcWyY1Xk88FAgOEBkfHhkGCAQKEQ0HEBgdDQssNTctHRkoMhoqYGZqAAAAAQA5AYUDewTd + AFkAvLsADAAFACUABCtBBQAaACUAKgAlAAJxQSEACQAlABkAJQApACUAOQAlAEkAJQBZACUA + aQAlAHkAJQCJACUAmQAlAKkAJQC5ACUAyQAlANkAJQDpACUA+QAlABBdQQMACQAlAAFxuAAM + ELgAW9wAuAAAL7sAGwADABEABCu7AFIAAQBCAAQruwAHAAEAKgAEK7gAERC5ACAAA/S6AD8A + QgBSERI5uABCELkATAAD9LgAUhC4AE/QuABPLzAxATIVFA4CBx4DFRQOAiMiLgI1ND4CMzIe + AjMyPgI1NC4CIyIOAgcOASMiJjU0Njc+BTcOASMiLgI1ND4CMzIWFx4BMzI+Ajc+AQNOLUVm + djFUbEAZO3OrcDtzWjgUICgTESU1STVMe1YvMUpUIhg7PTcTEiUSEB4RDAY9V2RYQAhFgDNP + XTEOEx8nExwzFCVOGiZUTkASHToE3SUWQUdGHAMnPEwnO3tkQBchJA0KHhsTEhURIDZGJyMs + GAkIDhMKChMYEQsYBwMjMzo0JwcMDAsTGA0MHRsSDgwFAQkPEQgJCwABATgDtgN5BhwAHQAL + ALgAEC+4ABwvMDEBHgEVFAYHDgUHDgEjIjU0Nz4DNz4BMzIDbQUHERQWSFZdU0MRESYPHjU6 + gHdmIQoUCxIGAgwXDRIsHR9OVVRJOQ4ODRYcLzN/g34yDhIAAAEAzP2yBKQD+gBZATW7AD4A + BwBVAAQruwAfAAcAFwAEK7gAVRC4AADQuAAAL0EhAAYAPgAWAD4AJgA+ADYAPgBGAD4AVgA+ + AGYAPgB2AD4AhgA+AJYAPgCmAD4AtgA+AMYAPgDWAD4A5gA+APYAPgAQXUEDAAYAPgABcUEF + ABUAPgAlAD4AAnG4AD4QuAAK0LgACi+4AD4QuAAN0LgADS9BBQAaABcAKgAXAAJxQSEACQAX + ABkAFwApABcAOQAXAEkAFwBZABcAaQAXAHkAFwCJABcAmQAXAKkAFwC5ABcAyQAXANkAFwDp + ABcA+QAXABBdQQMACQAXAAFxugA0ABcAHxESObgAVRC4AEvQuABLL7gAHxC4AFvcALgASC+4 + AAUvuwASAAMAOQAEK7oANABIAAUREjm6AD4ASAAFERI5MDETND4CMzIeAhUUBhUUHgIzMj4C + Nz4DMzIWFRQGBx4FFx4BFRQGIyIuAicOAyMiLgInHgMVFA4CIyImNTQ+AjU0LgI1ND4C0wcO + FxETHBIJBCpDVSohV2NoMwEOJD4xJSU+MwEIDhISEgcFAxsaDykoJQwuaGprMSZBNy8SAwkJ + BwoVIRgjFgMDAwcIBwIDAgMzR1AnCR0zRiojQzBouIpQNWWPWkiIaD8gGkW7ZB1NVlpTRhgO + HA0jL057lklDdVgzIDdKKU2Zi3QnNmhTMkw9JVZQQQ8JWYmrXDyBf3kAAAAAAgBM/wYEWQXl + AGwAfgFSuwB5AAcAIwAEK7sADwAHABwABCu7AGcABABFAAQruABFELgAA9C4AAMvuABFELgA + CNC4AAgvugAJAEUAZxESObgADxC4AAzQuAAML7gAHBC5ABQAB/S4AA8QuAA60LgAOi+4AA8Q + uAA/0LgAPy+4AA8QuABC0LgAQi+4AGcQuABb0LgAWy+4AGcQuABe0LgAHBC4AG3QuABtL7oA + cgAcAA8REjlBIQAGAHkAFgB5ACYAeQA2AHkARgB5AFYAeQBmAHkAdgB5AIYAeQCWAHkApgB5 + ALYAeQDGAHkA1gB5AOYAeQD2AHkAEF1BAwAGAHkAAXFBBQAVAHkAJQB5AAJxuABnELgAgNwA + uAAqL7gALC+4ABcvuwB8AAEAIAAEK7oACQAXACwREjm6AB0AIAB8ERI5ugBCABcALBESOboA + XwAXACwREjm6AHIAFwAsERI5MDElIiY1ND4CPQEOAQcWFBUUHgIVFAYjIi4CPQEOASMiJjU0 + PgQ3NjMyFhUUBgcOAwceARUUDgIVHAEXPgE3NTQ+Ajc+AzMyHgIVFAYHBhQVFBYdATc2MzIV + FAYHERQOAgE+AzcOBRUUFjMyNgOiEQwDBAM5gkkCDQ8NEBkYLyYYO3o/ZmJMgKazs00sGRkf + GyUpR0dIKgYEAgECAUSCPAUKDggMGhkVBgYOCgcXFgIEJRYNCyopERwk/lcCCQwPCSdUT0c2 + HysxNW0ZTj4nW15fLMUzXyYqRhV0x5tlERwqUaDunmAUF19kVravooViGA4aFxErHB8jHR4a + FzweL0A8QzAnUSgjWTCqJlZOQBAWHhEHExocCRMQBgcVDiVwQS0lFhAWQi/9YB82KRcCQ06h + lYEwIFFcYmFbJx8xFwAAAQFoAYkCbQKgAA8AWboAAwAKAAMrQQUA2gAKAOoACgACXUEbAAkA + CgAZAAoAKQAKADkACgBJAAoAWQAKAGkACgB5AAoAiQAKAJkACgCpAAoAuQAKAMkACgANXQC4 + AAAvuAAILzAxATIWFRQOAiMiNTQ2Nz4BAi8WKCs9QhdEJzIZPgKgJi4iRTgkPi5UKhUYAAAA + AAEAYv4vAxsAywAiAHa7AAoABQAgAAQrQQUAGgAgACoAIAACcUEhAAkAIAAZACAAKQAgADkA + IABJACAAWQAgAGkAIAB5ACAAiQAgAJkAIACpACAAuQAgAMkAIADZACAA6QAgAPkAIAAQXUED + AAkAIAABcQC4AAUvuwAbAAEADwAEKzAxJSY1NDYzMhceARUUDgIjIi4CNTQzMh4CMzI+AjU0 + JgKgDRANERAlJU6BqVs4VjoeFQkQIDozYp5vOxKRChANEw8gYTtlq3xFHC06HS0bIBtDbIpI + IjYAAAABAKoBdwFeBRkAKgCIuwAOAAQAIQAEK0EhAAYADgAWAA4AJgAOADYADgBGAA4AVgAO + AGYADgB2AA4AhgAOAJYADgCmAA4AtgAOAMYADgDWAA4A5gAOAPYADgAQXUEDAAYADgABcUEF + ABUADgAlAA4AAnG4AA4QuAAJ0LgACS+4AA4QuAAQ0LgAEC8AuAAcL7gAAC8wMQEyFhcUDgIP + AQ4DFRQXNjMyFRQGBw4DIyIuAjU0PgI3PgMBOw4SAwMEBgMbBAUDAgYXDA4YCwYQFBoSDxYO + BgkOEwsDGx8bBRkPEgEWIy0YvRlQYWkzKhwKDg4rDg4cFg4FIUhCVKuooUkMIR4WAAMAQgEr + AxkEywAVAC8ATQEnuABOL7gATy+4AAXcuABOELgAD9C4AA8vuQAjAAb0QSEABgAjABYAIwAm + ACMANgAjAEYAIwBWACMAZgAjAHYAIwCGACMAlgAjAKYAIwC2ACMAxgAjANYAIwDmACMA9gAj + ABBdQQMABgAjAAFxQQUAFQAjACUAIwACcbgABRC5AC0ABfRBBQAaAC0AKgAtAAJxQSEACQAt + ABkALQApAC0AOQAtAEkALQBZAC0AaQAtAHkALQCJAC0AmQAtAKkALQC5AC0AyQAtANkALQDp + AC0A+QAtABBdQQMACQAtAAFxuAAw0LgAMC+4AAUQuAA10LgANS+4AA8QuABE0LgARC8AugAm + AD8AAyu7AAAAAQAWAAQruwAwAAIAOgAEK7gAJhC5AAwAAvQwMQEyHgIVFA4EIyImNTQ+BBci + DgIHDgEHDgMVFBYzMj4ENTQmEzIeAhUUDgIjIg4CIyIuAjU0Njc+BQJtKUAsFzpeeHt2LFdT + MVNve4FCFywpJREQHxEwVD8kIx8kYWdlUDEsMwwcFxALERYLPpKZmUQXGg0DFhMMU3OFe2ME + yxksOyJIgm9aPyJKWD57b19GJ2sQGiAQDwoEC0NVWyQfIyE5TFlfLywi/ZIECg8KChMOCCIp + IgwUFwsVGQMCDhMUEgsAAAACAEoAcgS4A5wALwBdAAsAuAA1L7gATy8wMTcOASMiJjU0PgI3 + PgM3LgUnLgM1ND4CMzIeAhceARUUBw4DBQ4DIyImNTQ+Ajc+AzcuBScuATU0NjMyHgIXHgEV + FAcOA9kJJxUcLhYmLxowU1hlQQ45S1VSSBkNIBsSFCAoFSZGZZl5Ihc5RoN3agGLBhccHQsR + FRUiLhgwWmFsQQ42RVJUUiMaKjAqIFR0nWkgGTlGh35z0QIFDxcUFg4LCA8hLkIxDiQpKiUe + CQQNDxEJDhUNBw8uU0MTKBk9MDpRNiBSAgcHBQsQFBwWEwwWO0hWMQ0sNDk2Lg8LHxMdFyVJ + bEcWJRk9MDpkTzgAAAAABACB/poGjQV1AFIAdQCiAKsARwC4AFMvuABkL7sAEgADAJQABCu6 + AA0AlAASERI5ugAzAGQAUxESOboAUABkAFMREjm6AKMAZABTERI5ugCoAJQAEhESOTAxATIe + AhUUBgcOAwc+AzMyHgIVFA4CBw4DBw4DBw4DIyImNTQ+AjcOAQcOAyMiLgI1NDc+BT8BPgEz + MhYXPgEDMhUUBgcOBQcOAyMiJjU0Njc+BTc+AwUyFhcUDgIPAQ4DFRQXNjMyFRQOAgcOAyMi + LgI1ND4CNz4DAQ4DBz4BNwT2ChkVDwkHAwYICQUyXlFBFA0bFA0OExcJGEZXYzYDBQYHBgYY + GhgGDAkDCRAMasFEEhgRDwoJDwsGMRFDUVhPPg4QDBALBRcJBQ5bJysjIW6KnJ+aQS0sGhUV + CxIoNDWLmqGXhTEWHBYV/NAOEgMDBAcDGgMGBAIHFwwOBwoMBgYQFBsRDxYOBggPEwsDGx8b + A3sURk9MGjh4RAM3EhsgDg0WCwQqPkkiCQ4KBhMZGwkLDggDAQIHCxAJIFRXTxkbKBsNERAB + JVWMaBIpEQUJCAUUHB4KLgwFM0lWUUQTEg4VEgsRFgI+ThhYQDyat9Hj8n1Wc0YeKCczn2ps + 2tfQxblTJTckElwPEgEWIy0YvRlQYWkzKxsKDQcTFBMHDhwWDgUhSEJUq6ihSQwhHhb9jxxL + TkYXDBgNAAMAgf6aBhQFdQAiAE8AngAfALgAAC+4ABEvuwCVAAMAewAEK7oAVQARAAAREjkw + MQEyFRQGBw4FBw4DIyImNTQ2Nz4FNz4DBTIWFxQOAg8BDgMVFBc2MzIVFA4CBw4DIyIuAjU0 + PgI3PgMBDgMHJTYzMhYVFA4CBw4HIyIuAjU0PgI3PgM1NCYjIg4EFRYVFA4CIyIuAjU0PgQz + Mh4CFRQOAgSRJysjIW6KnJ+aQS0sGhUVCxIoNDWLmqGXhTEWHBYV/NAOEgMDBAcDGgMGBAIH + FwwOBwoMBgYQFBsRDxYOBggPEwsDGx8bAyUXOzw5FgJBDw4QEAcPGBEGQGB2e3ZdPAQMGhcP + QWN1M0hqRCERDiJQUEw6IwQRFxYFBRMTDydDW2lxOSs7JRA2WHQFdU4YWEA8mrfR4/J9VnNG + HignM59qbNrX0MW5UyU3JBJcDxIBFiMtGL0ZUGFpMysbCg0HExQTBw4cFg4FIUhCVKuooUkM + IR4W/AoRKy4wFnsEExgJHB0ZBgIPFxscGxUMEBkgDyFWXFsmNV9OPBMIDhAZHx4ZBgUHChEN + BxAYHQ0LLDU3LR0YKDMaKWVqaAAAAAAEADn+mgfVBXUAUgBbALUA2AClALgAti+4AMcvuwCu + AAEAngAEK7sAYwABAIYABCu7AHcAAwBtAAQruACGELgAANC4AAAvugANAG0AdxESObgAbRC5 + AHwAA/S4ABLQuAASL7gAbRC4ABzQuAAcL7oAMwDHALYREjm6AFAAxwC2ERI5ugBTAMcAthES + OboAWABtAHcREjm6AJsAngCuERI5uACeELkAqAAD9LgArhC4AKvQuACrLzAxATIeAhUUBgcO + Awc+AzMyHgIVFA4CBw4DBw4DBw4DIyImNTQ+AjcOAQcOAyMiLgI1NDc+BT8BPgEzMhYXPgEH + DgMHPgE3ATIVFA4CBx4DFRQOAiMiLgI1ND4CMzIeAjMyPgI1NC4CIyIOAgcOASMiJjU0Njc+ + BTcOASMiLgI1ND4CMzIWFx4BMzI+Ajc+ASUyFRQGBw4FBw4DIyImNTQ2Nz4FNz4DBj4KGRUP + CQcDBggJBTJeUUEUDRsUDQ4TFwkYRldjNgMFBgcGBhgaGAYMCQMJEAxqwUQSGBEPCgkPCwYx + EUNRWE8+DhAMEAsFFwkFDiMURk9MGjh4RP1YLUVmdjFUbEAZO3OrcDtzWjgUICgTESU1STVM + e1YvMUpUIhg7PTcTEiUSEB4RDAY9V2RYQAhFgDNPXTEOEx8nExwzFCVOGiZUTkASHToCmScr + IyFuipyfmkEtLBoVFQsSKDQ1i5qhl4UxFhwWFQM3EhsgDg0WCwQqPkkiCQ4KBhMZGwkLDggD + AQIHCxAJIFRXTxkbKBsNERABJVWMaBIpEQUJCAUUHB4KLgwFM0lWUUQTEg4VEgsRFo8cS05G + FwwYDQMWJRZBR0YcAyc8TCc7e2RAFyEkDQoeGxMSFREgNkYnIywYCQgOEwoKExgRCxgHAyMz + OjQnBwwMCxMYDQwdGxIODAUBCQ8RCAkLmE4YWEA8mrfR4/J9VnNGHignM59qbNrX0MW5UyU3 + JBIAAgBO/nUDtgPfAFAAYwE9uwAzAAUABQAEK7oAXgBWAAMruwBKAAYAPQAEK0EhAAYAMwAW + ADMAJgAzADYAMwBGADMAVgAzAGYAMwB2ADMAhgAzAJYAMwCmADMAtgAzAMYAMwDWADMA5gAz + APYAMwAQXUEDAAYAMwABcUEFABUAMwAlADMAAnFBBQAaAD0AKgA9AAJxQSEACQA9ABkAPQAp + AD0AOQA9AEkAPQBZAD0AaQA9AHkAPQCJAD0AmQA9AKkAPQC5AD0AyQA9ANkAPQDpAD0A+QA9 + ABBdQQMACQA9AAFxuAA9ELgAQNC4AEAvQQUA2gBWAOoAVgACXUEbAAkAVgAZAFYAKQBWADkA + VgBJAFYAWQBWAGkAVgB5AFYAiQBWAJkAVgCpAFYAuQBWAMkAVgANXbgAShC4AGXcALgAWy+7 + ADYAAwAAAAQrMDETIi4CNTQ+Ajc+AzciDgIHDgEjIiY1NDY3PgUzMh4CFRQOAgcOAxUUFjMy + PgQ1NCY1ND4CMzIeAhUUDgQTIi4CNTQ+AjMyFhUUBgcOAfglPi0aP3CbXBMpIRYBGFFWSA8I + DgYPDicoDS85PjguDAwkIBcHKVdQU4liNRojOYiHfmI6BRQbGQUGDQsHOWSInKmHCxYRCys8 + QhciIicxGj7+dR0wQCM8iY+PQg4gISEPCw8OAwICDxMaMw4ECQgHBQMGEB0YEzJCVjY4d29i + IhcoHzA7OC4MAwcDCQ0JBRIcIhAQQEtPQSkEVAkUIBciRTgjHSAvUyoWFwAAAP//ACP/bQVC + B1MCJgAiAAAABwBBAMEBP///ACP/bQVCB1UCJgAiAAAABwCPADsBOf//ACP/bQVCBx4CJgAi + AAAABwBnALABOQACACP/bQVCBtAAiACXADMAuAAPL7gAPS+7AAUAAQB+AAQrugBfAD0ADxES + OboAjgA9AA8REjm6AJMAPQAPERI5MDEBPgMzMhYXFjMyNjc2MzIVFAYHDgEHDgMVFBYXHgEX + PgM3NjMyFRQOAgceAxceAxUUBiMiJicuBScOAwcOAQcOAyMiLgI1NDY3PgE3DgEjIi4CNTQ+ + Ajc+Azc+BTcuAScuASMiBgcOASMiNTQ2AS4DJw4DBz4DAWYkTExKIydFHBwwM45bJxQMGRpd + oT8DEREOGQ4XOSA5W1NRLwkGEkFogkAXMDIyGgwbFw8eFyJBEg8kJyklIQw4a3aKVhgzIg4Q + DA0KCx0aEhcWBRkTFh4KGCcdEBAyXk0fQz84EwkhKS4tKRADAwIeMBojX08RIQsYCwHyFCcj + HgsfTE5HGStnbW4FjTddQiUzODlsWiYQDzMid3gFChwiKRYyczZd2nMOGBYXDQMNCy43NxNO + l4d0LBUcFQ8IDxMNFxJPZ3Z1aicSHRwcEDyNXiY2JBEbKTAVKUs2DDgpAgITHCANFA4GBg1A + iYFvJhJNYWthTBIDCAMzM19hFBIbDCH8ykmXkYY4QquwpT0HEhUXAAAA//8AI/9tBUIGmQIm + ACIAAAAHAIMAxQEGAAMAI/9tBUIG9gB7AI8AngEMuwAJAAUAfAAEK7oAFQB1AAMrQRsABgAV + ABYAFQAmABUANgAVAEYAFQBWABUAZgAVAHYAFQCGABUAlgAVAKYAFQC2ABUAxgAVAA1dQQUA + 1QAVAOUAFQACXboAbwB1ABUREjlBBQAaAHwAKgB8AAJxQSEACQB8ABkAfAApAHwAOQB8AEkA + fABZAHwAaQB8AHkAfACJAHwAmQB8AKkAfAC5AHwAyQB8ANkAfADpAHwA+QB8ABBdQQMACQB8 + AAFxuAB1ELkAhgAF9LoAlQB1ABUREjm4AAkQuACg3AC4AAYvuAA2L7oAWAA2AAYREjm6AG8A + NgAGERI5ugCVADYABhESOboAmgA2AAYREjkwMQEyFhc+ATMyFhUUDgIHFhUUDgIVFBYXHgEX + PgM3NjMyFRQOAgceAxceAxUUBiMiJicuBScOAwcOAQcOAyMiLgI1NDY3PgE3DgEjIi4CNTQ+ + Ajc+Azc+AzcOASMiJjU0PgQXNC4CJw4DFRQWMzI+BAMuAycOAwc+AwM7CxMJCh8ZMTcdMkQn + BhETERkOFzkgOVtTUS8JBhJBaIJAFzAyMhoMGxcPHhciQRIOJCgoJiEMOGt2ilYYMyIOEAwN + CgsdGhIXFgUZExYeChgnHRAQMl5NH0M/OBMKJCwyGBMmEVNHK0RVVUyLExobCDJxYEAXICVR + TUY0H2IUJyMeCx9MTkcZK2dtbgbnBQULDjssIUZFQBwJDQkcJiwZMnM2XdpzDhgWFw0DDQsu + NzcTTpeHdCwVHBUPCA8TDRcSTmd3dWonEh0cHBA8jV4mNiQRGykwFSlLNgw4KQICExwgDRQO + BgYNQImBbyYTVmpzMQUFPzgqU0k+LhluDgoGBgkFMEVQJhQZGCczNTT73kmXkYY4QquwpT0H + EhUXAAAAAAMAI/+mCBwFsAB8AIgAuAC/ALgADi+4ADMvuAAARVi4AHgvG7kAeAAIPlm7ACQA + AwAcAAQrugAZABwAJBESObgAJBC4ACfQuAAnL7oAQAAOADMREjm4AHgQuQBjAAP0QSEABwBj + ABcAYwAnAGMANwBjAEcAYwBXAGMAZwBjAHcAYwCHAGMAlwBjAKcAYwC3AGMAxwBjANcAYwDn + AGMA9wBjABBdQQMABwBjAAFxQQUAFgBjACYAYwACcboAfQAOADMREjm6AIMADgAzERI5MDEl + LgEnDgMHAw4DIyIuAjU0Njc+ATcGIiMiLgI1NDYzMjY3PgM3PgUzMh4CFRQOAhUUFhc+ATc+ + BTMyHgIVFAYrASIOBCsBHgMXHgEzMj4ENzYzMhYVFAcOBSMiLgIBPgE3JgInDgMHASIOBAcO + BSMiLgI1ND4CMzI+Ajc+ATMyHgIVFA4CIyImNTQmA8kXMxksdIWPSGYOEAwNCgsdGhIXFgUX + ExAeDhgnHRAnIyhNJh9GQjkUCiYwNDEpDAcgIRoRExECAhk9GSJcaG9pXiMwYk8zHBGbMIOR + kn9gFhcXPUVNJwkgEil3j6Gnp00NCQsJEEyora2hjzgmLx4S/c+G30smSh0fRUVAGQWODT5Q + WlRFExNIWGBWQg8XGw0DAQgRDw9Ob4lLkNNLJTAcCgwPDwMGDwh1Ua5dEiUhHQr+5SY2JBEb + KTAVKUs2DDgnAhMcIA0aCwICQY+GdCcUWnB4YkAEDRkVCRwmLBkPIRENEQUGDQwKCAQNFyAS + EwoNFBgUDV7q9e9jFxQQHiw4QycGDAgSCzddSzgmExIjMAF+ESoNkwEql0KbnZU9AU4LEBQT + EAQEEBMUEQoMFBYLCxINBxQdIg4cFwkSGRAQFw8HBw8LBgABADn+LwV8BRQAWwGBuABcL7gA + XS+4AFwQuAAK0LgACi+4AF0QuABD3LkAWQAF9EEFABoAWQAqAFkAAnFBIQAJAFkAGQBZACkA + WQA5AFkASQBZAFkAWQBpAFkAeQBZAIkAWQCZAFkAqQBZALkAWQDJAFkA2QBZAOkAWQD5AFkA + EF1BAwAJAFkAAXG4ACHQuAAhL7gAChC5ACoABfRBIQAGACoAFgAqACYAKgA2ACoARgAqAFYA + KgBmACoAdgAqAIYAKgCWACoApgAqALYAKgDGACoA1gAqAOYAKgD2ACoAEF1BAwAGACoAAXFB + BQAVACoAJQAqAAJxugBAAEMAWRESOQC4AABFWLgABS8buQAFAAg+WbsAVAABAEgABCu7ABQA + AwAeAAQruAAFELkALwAB9EEhAAcALwAXAC8AJwAvADcALwBHAC8AVwAvAGcALwB3AC8AhwAv + AJcALwCnAC8AtwAvAMcALwDXAC8A5wAvAPcALwAQXUEDAAcALwABcUEFABYALwAmAC8AAnEw + MSUOAyMiLgI1ND4CNz4DMzIeAhUUDgIjIiYnDgcVFB4CMzI+BDc2MzIVDgEHDgEHHgEVFA4C + IyIuAjU0MzIeAjMyPgI1NCYDhVKnoJVARFYyEjx1rHBst5NsIA8jHhQfLzcXEjMZEFV1i42D + Zj0LHDAmO6W9zse5ShYODAEPElXRcyAfTYKpWzhVOh4UChAfOjNinm87EZEsSDMbIDxUM1S1 + vsVkYIxaLBgiJAwNKCUbBQoIPF54iJGRiTsbLR8RJkNbaHE4EAwIHhJVnEIgXDZlq3xFHC06 + HS0bIBtDbIpIIjYAAAD//wDT/+cF7wdNAiYAJgAAAAcAQQDDATn//wDT/+cF7wdVAiYAJgAA + AAcAjwCFATn//wDT/+cF7wceAiYAJgAAAAcAZwCJATn//wDT/+cF7wZyAiYAJgAAAAcAgwC+ + AN/////Z/48ClgdNAiYAKgAAAAcAQf8TATn//wAO/48CTwdVAiYAKgAAAAcAj/7WATn////u + /48CVwceAiYAKgAAAAcAZ/7aATn//wAR/48CTAbMAiYAKgAAAAcAg/8PATkAAgAf/7IFmgVc + ACcAcgEpuwAUAAcAVQAEK7sARwAFAB4ABCtBIQAGABQAFgAUACYAFAA2ABQARgAUAFYAFABm + ABQAdgAUAIYAFACWABQApgAUALYAFADGABQA1gAUAOYAFAD2ABQAEF1BAwAGABQAAXFBBQAV + ABQAJQAUAAJxuAAUELgAA9C4AAMvugAXAFUARxESOUEFABoAHgAqAB4AAnFBIQAJAB4AGQAe + ACkAHgA5AB4ASQAeAFkAHgBpAB4AeQAeAIkAHgCZAB4AqQAeALkAHgDJAB4A2QAeAOkAHgD5 + AB4AEF1BAwAJAB4AAXG4AEcQuAB03AC4ADUvuABQL7sAQAADACMABCu7AG8AAQBjAAQrugAX + AFAANRESObgAYxC4AGDQuABgL7gAbxC4AHLQuAByLzAxAR4BFzc+AzcyFhUUBgcOAwceARc+ + BTU0LgIjIg4CByIuAjU0Ny4BNTQ2MzIeAh8BPgMzMh4EFRQOBiMiLgI1ND4CNy4DLwEGIiMi + NTQ+AjMyHgIzMjY3AUYJFAorQGRSRSMRCx0uEj9Waz4JCwJj2NK+kFVbq/abQ2xWQpAKEg0I + IwQCCA4LHRwVAwgoVlBCFW3RuZtwPkyCrMPMwao/FSMZDw0iOSwFBQMCAgwaNRx0AgQHBQUJ + EyYiCzAfBBBb0mwGCRAMBwEQCxMqEAYTFRYIdMxFHWB2gn5wKi9yZEMJDxRLCBcnICIaJkMm + JTcQHSkaSAoMCAMkQ190hkk2fIKCdmdMKxskJgwWDwMBCCJJRj4VkQJCCBsZEgcHBwMDAAAA + //8A1v+HBRgG/QImAC8AAAAHAHQBKwFz//8AOf/4BR8HTQImADAAAAAHAEEAjQE5//8AOf/4 + BR8HVQImADAAAAAHAI8AuAE5//8AOf/4BR8G5QImADAAAAAHAGcA0wEA//8AOf/4BR8GngIm + ADAAAAAHAHQBHwEU//8AOf/4BR8GPgImADAAAAAHAIMBbQCrAAEATABaA5EEkQBJAAsAuAAT + L7gAOS8wMRM0NjMyHgIXHgEXPgE3PgMzMhYVFAYHDgEHHgEXHgMVFA4CIyIuAicuAScOAQcO + AyMiLgI1NDY3PgE3Jy4DTAoMBx0mLhoZXjtKiDQXIBoWDhMTIh0vh0g0bTAhQTQgBw0SCxE6 + Q0UcJ1cwKUkeNDkhFhIHEA8KMEEqUChtJz4rFwRWCg8ZLT4kI3VGTYpMITIhER0hMWcoQo9L + PHMyIj40JwsJExELKTxHHipiOS1YLU1sQx8MGiofNJBUNl0sjTJjUjkAAAAAAwA5/uEFHwW8 + ADQAQwBhARW4AGIvuABjL7gAE9y4AGIQuAAq0LgAKi+4ABMQuQA1AAb0QQUAGgA1ACoANQAC + cUEhAAkANQAZADUAKQA1ADkANQBJADUAWQA1AGkANQB5ADUAiQA1AJkANQCpADUAuQA1AMkA + NQDZADUA6QA1APkANQAQXUEDAAkANQABcboAPQAqABMREjm4ACoQuQBEAAb0QSEABgBEABYA + RAAmAEQANgBEAEYARABWAEQAZgBEAHYARACGAEQAlgBEAKYARAC2AEQAxgBEANYARADmAEQA + 9gBEABBdQQMABgBEAAFxQQUAFQBEACUARAACcboATwAqABMREjkAuAAFL7gAHy+6AD0AHwAF + ERI5ugBPAB8ABRESOTAxAT4DMzIWFRQGDwEUFx4DFRQOBAcOAyMiJjU0NjcuAzU0Ejc+AzMy + FhM0JicOAgIHPgUBFBYXPgE3PgM3DgMHDgEjIiYjIgYHDgMEOxkmIR0REhUqJCEKGjUqG1CL + u9TibSgoGRQUDBEVGiU/LxvByVGwoYQlDRWINTs/p7e4UVG0sKB5SPvqLTsCBQM9pbW4URw+ + OzMRFTcVBQsFEykdUoZeNAT2Jkc4IScmF148NwoCCiY+WT1ezMWxiFIDT2xCHCknJmpFDClB + WTuLAVm8S3pWLwL+mzxVD1nb+f7ukBZfgp2mqP26SFcLBgoHffr1620GFB0kFRopAx0YRJma + lQD//wDZ/7wEzwcGAiYANgAAAAcAQQAXAPL//wDZ/7wEzwcOAiYANgAAAAcAjwDHAPL//wDZ + /7wEzwceAiYANgAAAAcAZwB9ATn//wDZ/7wEzwZuAiYANgAAAAcAgwCPANv//wAd/vAFTAdV + AiYAOgAAAAcAjwBaATkAAgBO/1gFKwUlAEEAVgGNuABXL7gAWC+4AFcQuAA60LgAOi+4AAPQ + uAA6ELgAB9C4AAcvuABYELgAGty4ADoQuQAnAAf0QSEABgAnABYAJwAmACcANgAnAEYAJwBW + ACcAZgAnAHYAJwCGACcAlgAnAKYAJwC2ACcAxgAnANYAJwDmACcA9gAnABBdQQMABgAnAAFx + QQUAFQAnACUAJwACcbgAJNC4ACQvuAA6ELgAMdC4ADEvuAA6ELgAN9C4ADcvuAAnELgAQtC4 + AEIvuAAnELgARdC4AEUvuAAaELkATwAG9EEFABoATwAqAE8AAnFBIQAJAE8AGQBPACkATwA5 + AE8ASQBPAFkATwBpAE8AeQBPAIkATwCZAE8AqQBPALkATwDJAE8A2QBPAOkATwD5AE8AEF1B + AwAJAE8AAXEAuAAKL7gALC+7AEgAAwAhAAQruwAQAAIAUgAEK7gAEBC4AADQuAAAL7gAEBC4 + AAPQuAADL7gAUhC5ABUAAfS4ACEQuAAk0LgAJC+4ABAQuQBCAAP0uAA60LgAOi8wMRM6ATc1 + NCY1NDYzMhYXHgEXPgMzMh4CFRQOBCMqAScWFBUUDgIjIi4CPQEmNTQ2NzQmNS4DNTQ2BR4B + Fx4BMzI+BDU0JiMiDgKBHTocAggOFzINBAUDVZ6Rhz9skFckSX+pwc5kEycSAhEbIhAOEQgC + GQsOAh87Lx0aAQcDAwIRJRZbuaqUbT9vd02am5wDhQLwLD0UHBVPUReFXgYODgkPIjgoRId8 + a1AtAlp/FypCLRceOFAx9hUqHBkFWLRYAhYdHQoWEX9bvVsCAihBVFlVIxUaEhgXAAEAx/28 + BS8FCABxAgq7AE8ABgBoAAQruwANAAQARQAEK7sAGAAFADAABCtBIQAGAE8AFgBPACYATwA2 + AE8ARgBPAFYATwBmAE8AdgBPAIYATwCWAE8ApgBPALYATwDGAE8A1gBPAOYATwD2AE8AEF1B + AwAGAE8AAXFBBQAVAE8AJQBPAAJxuABPELgAANC4AAAvuABPELgAA9C4AAMvugASAGgAGBES + OUEFABoAMAAqADAAAnFBIQAJADAAGQAwACkAMAA5ADAASQAwAFkAMABpADAAeQAwAIkAMACZ + ADAAqQAwALkAMADJADAA2QAwAOkAMAD5ADAAEF1BAwAJADAAAXFBBQAaAEUAKgBFAAJxQSEA + CQBFABkARQApAEUAOQBFAEkARQBZAEUAaQBFAHkARQCJAEUAmQBFAKkARQC5AEUAyQBFANkA + RQDpAEUA+QBFABBdQQMACQBFAAFxuABoELkAWQAH9LgAaBC4AF/QuABfL7gAGBC4AHPcALgA + XC+4AABFWLgAIS8buQAhAAg+WbsACgACAEgABCu7ABUAAgAzAAQrugASADMAFRESObgAIRC5 + ACkAA/RBIQAHACkAFwApACcAKQA3ACkARwApAFcAKQBnACkAdwApAIcAKQCXACkApwApALcA + KQDHACkA1wApAOcAKQD3ACkAEF1BAwAHACkAAXFBBQAWACkAJgApAAJxMDEBHAEXPgUzMhYV + FA4CBz4BMzIWFRQOBiMiLgI1NDYzMj4ENTQmIyIOAiMiJjU0PgI3PgM1NCYjIg4DAhUUHgQX + FhQVFAYjIiYnLgc1ND4CMzIeAgErAhtacYSLjkI6Qz9ph0hBlFSAjjxlhJCTgmcdGB4QBSAf + QKSpon5NW1lprYlpJRwWBREgGmm1hU0aJiqBkJF0SQMDBQQDAQEnGh0SBAECAgICAQEBAQkT + EhIVCwMDNyJlRmSxlXZSLD08So5+aSQRGmlaPHFoXE4/LBcYISQNGgsqR1xkZCwqNCMrIyQq + DBEPDwsre4N7KxUgNW+s7/7KwDNzc2xYPQsIDwc+Njk8D3CnztvYu44jIjkoFhktPAD//wA1 + /7IEpAYyAiYAQgAAAAYAQXYeAAD//wA1/7IEpAYcAiYAQgAAAAYAjzUAAAD//wA1/7IEpAXl + AiYAQgAAAAYAZzUAAAD//wA1/7IEpAWKAiYAQgAAAAYAdGIAAAD//wA1/7IEpAWTAiYAQgAA + AAYAg28AAAD//wA1/7IEpAWyAiYAQgAAAAYA4TUAAAAAAwAM/8UHOQPPAG0AewCKAxK7AHoA + BAASAAQruwAmAAYAMwAEK7sAVgAHAAUABCu7AEwABQCIAAQrQQUA5gBWAPYAVgACXUEDAAYA + VgABcUEdAAYAVgAWAFYAJgBWADYAVgBGAFYAVgBWAGYAVgB2AFYAhgBWAJYAVgCmAFYAtgBW + AMYAVgDWAFYADl1BBQAVAFYAJQBWAAJxugAIAAUAVhESOboAHAAFAFYREjm4ABwvQQUAGgAc + ACoAHAACcUEhAAkAHAAZABwAKQAcADkAHABJABwAWQAcAGkAHAB5ABwAiQAcAJkAHACpABwA + uQAcAMkAHADZABwA6QAcAPkAHAAQXUEDAAkAHAABcUEhAAYAJgAWACYAJgAmADYAJgBGACYA + VgAmAGYAJgB2ACYAhgAmAJYAJgCmACYAtgAmAMYAJgDWACYA5gAmAPYAJgAQXUEDAAYAJgAB + cUEFABUAJgAlACYAAnG4ACYQuAAp0LgAKS+4ABwQuQA/AAT0ugBCABwAPxESOboAdQASAEwR + EjlBCwAGAHoAFgB6ACYAegA2AHoARgB6AAVdQRcAVgB6AGYAegB2AHoAhgB6AJYAegCmAHoA + tgB6AMYAegDWAHoA5gB6APYAegALXUEDAAYAegABcUEFABUAegAlAHoAAnG6AIEAEgBMERI5 + QQUAGgCIACoAiAACcUEhAAkAiAAZAIgAKQCIADkAiABJAIgAWQCIAGkAiAB5AIgAiQCIAJkA + iACpAIgAuQCIAMkAiADZAIgA6QCIAPkAiAAQXUEDAAkAiAABcbgATBC4AIzcALgAOi+4AABF + WLgAAC8buQAAAAg+WbsAbgACAA0ABCu7AEcAAgAfAAQrugAIAAAAOhESOboAQgAAADoREjm4 + AAAQuQBbAAP0QSEABwBbABcAWwAnAFsANwBbAEcAWwBXAFsAZwBbAHcAWwCHAFsAlwBbAKcA + WwC3AFsAxwBbANcAWwDnAFsA9wBbABBdQQMABwBbAAFxQQUAFgBbACYAWwACcboAdQAAADoR + Ejm4AB8QuAB80LgAfC+6AIEAAAA6ERI5MDEFIi4CNTwBNw4DIyIuAjU0PgQzPgE1NCYjIg4E + FRQWFRQOAiMiLgI1ND4EMzIeAhUUBgc+AzMyHgIVFA4EBw4BFRQeAjMyPgI3NjMyFRQGBw4F + JTI+BDcOAxUUASIOAgc+BTU0JgR1PoFoQgI/lqOtViMyIhBEdqG4yGMXGi03KGRoYk0vBBIW + FQQFEBAMMFVyhI5HMksxGQwLRaapo0I0Si4WTIKrv8ZcFBUXNFU+Wbatn0IZDAoPDx5WaHmC + ivvyJl5obWpiKZrrn1EF3zeVoJ0+UKCTfl01KR0eQ21PCRMJS4BfNhgqNyA5c2lbQyYwYTIz + LRonMS8mCgMGAwcMCAQPGB0ODjVAQzYjGS09JSVMJ0RwTywVJTIdMFtQRTIfAyZOJiM/Lxsw + UGo7Fg0LJRMmV1ZPPSRKGzNGV2Q2D1puah8lAzsrTGo/CiMrMC8qEBEeAAEANf4vBEIEEABV + AWm7ACQABwAKAAQruwA9AAUAUwAEK0EhAAYAJAAWACQAJgAkADYAJABGACQAVgAkAGYAJAB2 + ACQAhgAkAJYAJACmACQAtgAkAMYAJADWACQA5gAkAPYAJAAQXUEDAAYAJAABcUEFABUAJAAl + ACQAAnG4ACQQuABH0LgARy9BBQAaAFMAKgBTAAJxQSEACQBTABkAUwApAFMAOQBTAEkAUwBZ + AFMAaQBTAHkAUwCJAFMAmQBTAKkAUwC5AFMAyQBTANkAUwDpAFMA+QBTABBdQQMACQBTAAFx + uAA9ELgAV9wAuAARL7gAEy+4AABFWLgABy8buQAHAAg+WbsATgABAEIABCu4AAcQuQApAAH0 + QSEABwApABcAKQAnACkANwApAEcAKQBXACkAZwApAHcAKQCHACkAlwApAKcAKQC3ACkAxwAp + ANcAKQDnACkA9wApABBdQQMABwApAAFxQQUAFgApACYAKQACcTAxJSYnDgMjIiY1ND4ENzYz + MhYVFA4EBw4FFRQeAjMyPgQ3NjMyFRQOAgcXHgEVFA4CIyIuAjU0MzIeAjMyPgI1NCYDAgUD + N3eAiEZmY01/prOzTSwaGR4pQVJSShkoXV9YQykKFyMZQImKiH5xLxUOCzNQYjAGJSVNgqlb + OFY6HRQKEB86M2KebzsRkQIHJ0MxHF9kVravooViGA4ZFxkyMS4mHAgZUWNvb2ssDx0XDSM9 + UlxjLxYQF05ZXCUFIGE7Zat8RRwtOh0tGyAbQ2yKSCI2AAAA//8ANf/jBGIGFAImAEYAAAAG + AEEQAAAA//8ANf/jBGIGHAImAEYAAAAGAI/WAAAA//8ANf/jBGIFtAImAEYAAAAGAGcKzwAA + //8ANf/jBGIFEwImAEYAAAAHAIMAMP+A////uf/uAnYGFAImANsAAAAHAEH+8wAA////7f/u + Ai4GHAImANsAAAAHAI/+tQAA////yf/uAjIF5QImANsAAAAHAGf+tQAA////8f/uAiwFkwIm + ANsAAAAHAIP+7wAAAAEANf/jBGYGHgBlAYu4AGYvuABnL7gAZhC4ABrQuAAaL7gAZxC4ABDc + ugALABoAEBESObgAGhC5ADMABPRBIQAGADMAFgAzACYAMwA2ADMARgAzAFYAMwBmADMAdgAz + AIYAMwCWADMApgAzALYAMwDGADMA1gAzAOYAMwD2ADMAEF1BAwAGADMAAXFBBQAVADMAJQAz + AAJxuAAQELkAPQAH9EEFABoAPQAqAD0AAnFBIQAJAD0AGQA9ACkAPQA5AD0ASQA9AFkAPQBp + AD0AeQA9AIkAPQCZAD0AqQA9ALkAPQDJAD0A2QA9AOkAPQD5AD0AEF1BAwAJAD0AAXG6AFQA + GgAQERI5ALgAAC+4AAIvuAAARVi4ABcvG7kAFwAIPlm6AAsAFwACERI5uQA2AAL0QSEABwA2 + ABcANgAnADYANwA2AEcANgBXADYAZwA2AHcANgCHADYAlwA2AKcANgC3ADYAxwA2ANcANgDn + ADYA9wA2ABBdQQMABwA2AAFxQQUAFgA2ACYANgACcboAVAAXAAIREjkwMQE2MzIWFRQGBw4B + Bx4DFRQOBCMiJjU0PgQ3PgEzMhYVFA4EBw4DFRQWMzI+BDU0LgInDgEHBiMiJjU0PgI3PgM3 + LgM1ND4CMzIWFz4DA3sGBQ4SERQoUytRj2w/S36jsbFMhJMvVniSqFshMRQdKhclMTQzFVir + h1NMWkOWk4ZmPTphgUhRsWIZDQsLBgwQCwksQVAsYJpsOhYiKRRVymYwW0w5BhsDIhcUKQ4d + OiAoaYGZV3zcuZJlNn6GQouLhHViIg0PLyodJBgOCw4LL3uRoVNIRDVhh6O6ZFKKcVojQp5n + GhoVECgpJw8NKzY/ISAaDgwRCxALBSclIkE0Jf//AML/yQQ7BdICJgBPAAAABgB0TkgAAP// + ADX/4wR7BhQCJgBQAAAABgBBOQAAAP//ADX/4wR7BhwCJgBQAAAABgCPOQAAAP//ADX/4wR7 + BdICJgBQAAAABgBnYu0AAP//ADX/4wR7BY4CJgBQAAAABgB0bQQAAP//ADX/4wR7BZMCJgBQ + AAAABgCDNQAAAAADACMAewQOBGYAJAA1AE0AbboAKAAwAAMrQQUA2gAwAOoAMAACXUEbAAkA + MAAZADAAKQAwADkAMABJADAAWQAwAGkAMAB5ADAAiQAwAJkAMACpADAAuQAwAMkAMAANXbgA + KBC4ADnQuAAwELgAQdC4AEEvALgAJS+4AD4vMDETMh4CMzI+BDc+AzMyFhUUDgIHDgMjIjU0 + PgIBMhYVFA4CIyImNTQ2Nz4BEzIWFRQOAiMiJjU0PgI3PgM3PgE7BwwZMS0MMT5HRDkTVoRs + XC4XEAkWJx4hisP1i5kCBQkCLxYoKz1CFyIhJjIaPRcWKCk6QxkdLgUNFhEPDw4RDxEfArAG + CAYDBAYGBQIJEAwIDwsJFRUUBwkeHRZBCRoZEgG2Ji4iRTgjHSAvUyoWF/0yJi4gRjwnKiAQ + JSYjDw0HAgQLDBUAAAAAAwA1/skEewTfADEAQwBZAT24AFovuABbL7gAWhC4AAjQuAAIL7gA + WxC4ACLcugADAAgAIhESOboAHQAIACIREjm6ADgACAAiERI5uQA/AAX0QQUAGgA/ACoAPwAC + cUEhAAkAPwAZAD8AKQA/ADkAPwBJAD8AWQA/AGkAPwB5AD8AiQA/AJkAPwCpAD8AuQA/AMkA + PwDZAD8A6QA/APkAPwAQXUEDAAkAPwABcboASQAIACIREjm4AAgQuQBUAAT0QSEABgBUABYA + VAAmAFQANgBUAEYAVABWAFQAZgBUAHYAVACGAFQAlgBUAKYAVAC2AFQAxgBUANYAVADmAFQA + 9gBUABBdQQMABgBUAAFxQQUAFQBUACUAVAACcQC4ABUvuAAvL7oAAwAvABUREjm6AB0ALwAV + ERI5ugA4AC8AFRESOboASQAvABUREjkwMRc0NjcuAzU0PgQ/AT4DMzIWFRQOAgceAxUUDgQH + DgEHDgEjIiYBIgcGAg8BPgU1NC4CAT4DNwcOAwcOAxUUFjM6AfIcGT5bPB0/bZKnslc7ExwZ + GhESHg8bIxQ0UjgdQnCToKNJER0LER4dIBMCmRwZOI5dVj6GfnFVMhcnMv2lIFBXWisXFCww + MRk7Z0wrQjkIEe4makEBGjhZQFarnYptSg5rIkE0ISAbDy86RCUFKD5RLl6smYFmRxIoTy1E + RSEEXAdk/u+6rBlKXWt0eTwnNyEP/PVLpamnTBUSDwoOESppc3c5OUAA//8Acf/dA7IGGAIm + AFYAAAAGAEGrBAAA//8Azf/dA7IGNwImAFYAAAAGAI8IGwAA//8Azf/dA7IF5QImAFYAAAAG + AGfmAAAA//8Azf/dA7IFkwImAFYAAAAGAIMdAAAA////lP3LA8gGHAImAFoAAAAGAI+bAAAA + AAIA0/2yBY8GbwA7AFwBALsANQAEACQABCu7AAUABABFAAQruAAkELkAWwAH9LgAEdC4ABEv + uABbELgAFtC4ACQQuAAe0LgAHi+4ACQQuAAh0LgAIS+4ADUQuAAt0LgALS+4ADUQuAAw0LgA + MC+4ADUQuAA80LgAPC9BBQAaAEUAKgBFAAJxQSEACQBFABkARQApAEUAOQBFAEkARQBZAEUA + aQBFAHkARQCJAEUAmQBFAKkARQC5AEUAyQBFANkARQDpAEUA+QBFABBdQQMACQBFAAFxuAAF + ELgAXtwAuAAoL7gAGy+7ADwAAQAOAAQruwAAAAMASgAEK7oAEQAOADwREjm6ADUAGwAoERI5 + MDEBMh4CFRQOBiMiJiceAxUUDgIjIiY1NDY1NAI1ETQ2MzIeAhUUBhUUHgIXPgUBMj4GNTQu + AiMiDgQHDgMVFA4CKwEEoD5aOxw/bZGkraaVOQ4YCwMFBAIKFSEYIxYHDSAdEBUMBAMBAwQC + IHORp6eg/Pozipukm4poPBQiLRotbHV5cmcpFxoMAwcXKyQYA7IcM0kuOHd4dGhYQCQBA1Zr + SDQfNmhTMkw9NHE3cgFZ3APqZmEoQE4nLUoTGn+x13IjS0Y/Lxv86CA4TVdfX1kmFyIXDBAd + Ji0xGA4UEhUOEhwSCgD///+U/csDyAWTAiYAWgAAAAYAg9QAAAAAAQDE/+4BYAO2AB0Ak7sA + CgAHABkABCu4ABkQuQAFAAf0QSEABgAKABYACgAmAAoANgAKAEYACgBWAAoAZgAKAHYACgCG + AAoAlgAKAKYACgC2AAoAxgAKANYACgDmAAoA9gAKABBdQQMABgAKAAFxQQUAFQAKACUACgAC + cbgAChC4AA/QuAAPLwC4AAAvuAAARVi4ABQvG7kAFAAIPlkwMQEyHgIVFA4CFRQeAhUUDgIj + Ii4CNTQSPgEBAA0hHhQICwgDAwMFDx0XFRkPBQUNGAO2FSAnEgtdhp1LYXlIIwkMFA4IIj1W + M6MBD8NrAAAAAf/o/7IE1gVKAFkAqboAOwAQAAMrQRsABgA7ABYAOwAmADsANgA7AEYAOwBW + ADsAZgA7AHYAOwCGADsAlgA7AKYAOwC2ADsAxgA7AA1dQQUA1QA7AOUAOwACXbgAOxC5AAAA + B/S4ADsQuQAVAAb0uAAF0LgABS+4ABUQuAAI0LgACC+4ABUQuQAkAAf0uAA7ELgAK9C4ACsv + uAA7ELgAQNC4AEAvALgAHS+7AEMAAwBVAAQrMDE3ND4CNz4BNw4DIyImNTQ+Ajc+AzU0NjMy + HgIXFhUUBw4DBz4DNzYzMhYVFAYHDgEHDgMHHgEzMj4ENzYzMhUUBw4CBCMiLgKmDxUZCQIE + Ahg6OTMSHh4YPWlSAwYEAxkYDBMSEwwcLAIFBAUDKEA4NBwHCA4MEhkZfV4CBQMDAQ8gDjN+ + jJOOgzYTDRAYPbPd/v+MPEspDlQeLiATAi56SAwdGRAkHBEUHzQxY8aldhJFUxAdKBg2OUpB + EkBVZjgZKiQcDAMXEBAoFxdkO0B+c2MkBQMQHSkxOB4KDhIZQXRXNBotOwAAAAAB/6L/jQI5 + BmoAUQC8uwAdAAcARgAEK7gAHRC4AA/QuAAPL7gAHRC4ACLQuAAiL0EFABoARgAqAEYAAnFB + IQAJAEYAGQBGACkARgA5AEYASQBGAFkARgBpAEYAeQBGAIkARgCZAEYAqQBGALkARgDJAEYA + 2QBGAOkARgD5AEYAEF1BAwAJAEYAAXG4AEYQuAAs0LgALC+4AEYQuAAz0LgARhC4AE3QuABN + LwC4AAAvuAAnL7oADwAnAAAREjm6ADQAJwAAERI5MDETMh4CFRQGFRQeBBc+ATc+ATMyFhUU + DgIHHgMVFA4CIyIuAjU0LgQ9AQ4DIyImNTQ+Ajc+Azc8ATY0NjQ1ND4C/BMXDAQBAQMDAwUC + P1wvBQcDDgwOMl5RAgUDAhkiIgkJDAYCAQECAQEaQkI9FR0eChclGgsxOz0XAQEBCRIGahYj + LRcRIg4JRWuKn6xXKDkVAgIZDg8kNUo1ZbmSXwsdMyYWFB8nEw01R1JSTR9SDiIeFCQbCxAQ + EQwFGyEjDU62ua+LXAkSMi4hAAEA+wP7A2QF7AApABUAuAAfL7gAAy+6ABgAAwAfERI5MDEB + DgEjIiYnLgMnLgE1ND4CMzIeAhc+Azc2MzIWFRQGBw4DAkwMJhQRHAYPKzAyFhURCxIWCws1 + QEEYGT9HTCYWEA4NDxEPPEdKBCMUFBAQKUg6LQ8OHQ0MFA8IJ0VhOi9fXVgoFx0VFjMTEUJV + YgAAAAABAI0ENwOyBdgAJACKuwALAAQAAAAEK0EhAAYACwAWAAsAJgALADYACwBGAAsAVgAL + AGYACwB2AAsAhgALAJYACwCmAAsAtgALAMYACwDWAAsA5gALAPYACwAQXUEDAAYACwABcUEF + ABUACwAlAAsAAnG4AAsQuAAI0LgACC8AuAAYL7oABQAgAAMruAAgELkAEAAB9DAxEzQ+AjMy + FhUUBhUUHgIzMj4CNz4BMzIVFAYHBgQjIi4CjQwWHhIWDAEXKTYgM2l2iVILEwYLFBeF/u2Z + Kkk2IAT6FDItHiUXDBcJIS0bDBtBak8LChAOLRqenhsySQAAAAEBsgS+AosFoAANAHK7AAMA + BwAJAAQrQQUAGgAJACoACQACcUEhAAkACQAZAAkAKQAJADkACQBJAAkAWQAJAGkACQB5AAkA + iQAJAJkACQCpAAkAuQAJAMkACQDZAAkA6QAJAPkACQAQXUEDAAkACQABcQC7AAAAAwAGAAQr + MDEBMhYVFAYjIiY1ND4CAjEtLUU2LjASIi4FoDssOUI3MBcsIxUAAgExA+EDgQWyABgALAD3 + uAAtL7gALi+4AAjcuQAZAAX0QQUAGgAZACoAGQACcUEhAAkAGQAZABkAKQAZADkAGQBJABkA + WQAZAGkAGQB5ABkAiQAZAJkAGQCpABkAuQAZAMkAGQDZABkA6QAZAPkAGQAQXUEDAAkAGQAB + cbgABdC4AAUvuAAtELgAEtC4ABIvuQAjAAX0QSEABgAjABYAIwAmACMANgAjAEYAIwBWACMA + ZgAjAHYAIwCGACMAlgAjAKYAIwC2ACMAxgAjANYAIwDmACMA9gAjABBdQQMABgAjAAFxQQUA + FQAjACUAIwACcQC4AAAvuAAFL7sAJgACAA8ABCswMQEyFz4BMzIWFRQOBCMiJjU0PgQXNC4C + Jw4DFRQWMzI+BAKwExQJIBkxNylEWWJjK1NHK0RVVUyLExsbBzJyYEAYICVRTUY0HwWkCgsN + OysnVFFINyA/OCpTSj4tGm8OCwUGCQUwRFElFBkYJzI1NAAAAAECgf5OBNAAXgAuAHq7AA4A + BAAoAAQrQSEABgAOABYADgAmAA4ANgAOAEYADgBWAA4AZgAOAHYADgCGAA4AlgAOAKYADgC2 + AA4AxgAOANYADgDmAA4A9gAOABBdQQMABgAOAAFxQQUAFQAOACUADgACcQC4AAAvuAACL7sA + EQACACMABCswMSU2MzIWFRQHDgUVFBYzMj4CNzYzMhYVFAYHDgMjIi4CNTQ+BAPTCgkOFhYX + ODg1KRkaHSxkZmEqCggICAkLJF5qbzYjPS8bKD9OS0BcAggJDQ8RMDtBQj4bEh0bMkUqCg8L + DBsOLU05IA0cKh0tXVhQPigAAAIBLAO2A28GNgAbADcAHAC4ADUvuAANL7gAAEVYuAApLxu5 + ACkADD5ZMDEBHgEVFA4EBw4BIyImNTQ3PgM3PgEzMiUeARUUDgQHDgEjIiY1NDc+Azc2MzIW + AgAQEBQfJyUfCQgXCxESDRcrIxkFAhYPDwFWERYaKDAuJQgHGAsREg0XOTQnBQMSBhAF8hYi + HRxQWl9UQhEODRkUFx0zc3VxMhIdGRcyJR9LT09FOBEODRgUFx0zcXNwMh8LAAAAAAIAb/9t + BOkFsABLAGAAHwC4AAAvuAAoL7oATAAoAAAREjm6AFkAKAAAERI5MDEBMh4CFRQOAhUUFhce + Axc3NjIzMhUUDgIHHgEXHgMVFAYjIi4CJw4FIyIuAjU0PgI3PgU3PgUBPgM3Jy4FJw4FBwL2 + ByAhGhETERkOFzg/RCNlBQgDEBQgJhIRIhELGxcQHhcoNionGS15ipKMfS8bMCMVBgsRCwct + QEtKQRYKJjA0MSn+EFats7pjNREoKCgkHgosTkhFRUopBbAEDRkVCRwmLBkxdTVb1+DcXh8C + CwgVFxkKKEgdFRwVDwgPEw4tVkgTKSYiGQ8aKjUcFSUoLRsSY4ecmIQrFFpweGJA+m0IGiEn + F6Q1hJGXkoY2X6ulpLHEcgAB//r/vATrBPIAewEfuAB8L7gAfS+4AGncuQAaAAT0QQUAGgAa + ACoAGgACcUEhAAkAGgAZABoAKQAaADkAGgBJABoAWQAaAGkAGgB5ABoAiQAaAJkAGgCpABoA + uQAaAMkAGgDZABoA6QAaAPkAGgAQXUEDAAkAGgABcbgAfBC4AF3QuABdL7kAJgAE9EEhAAYA + JgAWACYAJgAmADYAJgBGACYAVgAmAGYAJgB2ACYAhgAmAJYAJgCmACYAtgAmAMYAJgDWACYA + 5gAmAPYAJgAQXUEDAAYAJgABcUEFABUAJgAlACYAAnG4AF0QuABG0LgARi+6AFMARgBpERI5 + ALgAPC+7AHcAAwALAAQruwBkAAMAHwAEK7sAKQABAFgABCu6AFMAWAApERI5MDElMhYVFAYH + DgMjIiY1JjU0PgI3PgM1NC4CIyIOBBUUFjMyNjc+ATMyHgIVFAYHDgMjIi4ENTQ2MzIeAjM6 + ATc+AzUOAyMiLgI1ND4EMzIeAhUUDgIHDgEVFBYXHgEzMj4CBMUUEhMTNldKQSBpbhgQGyMS + OmBDJSk9RRxDlZCEZDtCOSVTIgsWDRAXDgYXDRUvNz8jDjhDSDomFyETN0BEHwkSCCIwHQ0O + LTIyEzZQNRpFd56zvVs8aU0tPWWBRAMCCAYJOTkhWFdK3RUODx8JGh0NApKbFxcOHR4eDzFm + aGgzRE8oCjZdfIyVRzlACxAXGxUfJRAsYi1HWzQUBg4UHCQWGhwJCgkCBTpKSBQJDwsGJDxO + KW7IrYxkNiBEbEtIo52JLhEgDhwvFiIaCg0KAAAAAAH/+P+kBBkDjwBtASS7ACYABAAuAAQr + ugALAB8AAyu4AAsQuAAI0LgACC9BBQDaAB8A6gAfAAJdQRsACQAfABkAHwApAB8AOQAfAEkA + HwBZAB8AaQAfAHkAHwCJAB8AmQAfAKkAHwC5AB8AyQAfAA1dugAXAB8ACxESObgAHxC4ABrQ + uAAaL0EhAAYAJgAWACYAJgAmADYAJgBGACYAVgAmAGYAJgB2ACYAhgAmAJYAJgCmACYAtgAm + AMYAJgDWACYA5gAmAPYAJgAQXUEDAAYAJgABcUEFABUAJgAlACYAAnG6ADwALgAmERI5ALgA + Uy+4AAMvuAApL7sASgABAD8ABCu6ABcAPwBKERI5uAA/ELgAPNC4ADwvuABKELgAR9C4AEcv + ugBdAD8AShESOTAxBRQGIyIuAjU0NjU0LgQnJjQ1NDcOAQcUDgIVFA4EFRQGIyIuAjU0PgI3 + PgQ0NTQ3DgEjIi4CNTQ2MzIWMzI+BjMyHgIVFA4CBx4BFx4DFxQeBgNtJiQRFQwEAQMGBwcG + AgIGSKRLAwMDBAYGBgQqJgkNCAMDBQYDAwUDAgEGMlEXMz4gChAZGUUrC0hpgYaBa0sMGScb + DhY2XEYFCQICBAQEAwQEBgYGBAMmHRk8W2ouDBYLHUxTVUs+EgoUCykjChEIEz5FRRkSWXJ/ + blEMIh0TIi0aHDw7NhcdTFRUTD0SIiYFBhUbHAgQDwgFCAsLCwgFCxETCA0LBgYJCRULEj9G + RxoENFFkZ2JMLgAAAAH+K/6aAmIFdQAiAAsAuAAAL7gAES8wMQEyFRQGBw4FBw4DIyImNTQ2 + Nz4FNz4DAjsnKyMhboqcn5pBLSwaFRULEig0NYuaoZeFMRYcFhUFdU4YWEA8mrfR4/J9VnNG + HignM59qbNrX0MW5UyU3JBIAAAAAAQA1/+MEZgWkAEIBV7gAQy+4AEQvuAAP3LgAQxC4ABnQ + uAAZL7kAMgAE9EEhAAYAMgAWADIAJgAyADYAMgBGADIAVgAyAGYAMgB2ADIAhgAyAJYAMgCm + ADIAtgAyAMYAMgDWADIA5gAyAPYAMgAQXUEDAAYAMgABcUEFABUAMgAlADIAAnG4AA8QuQA8 + AAf0QQUAGgA8ACoAPAACcUEhAAkAPAAZADwAKQA8ADkAPABJADwAWQA8AGkAPAB5ADwAiQA8 + AJkAPACpADwAuQA8AMkAPADZADwA6QA8APkAPAAQXUEDAAkAPAABcQC4AAgvuAAARVi4ABYv + G7kAFgAIPlm5ADUAAvRBIQAHADUAFwA1ACcANQA3ADUARwA1AFcANQBnADUAdwA1AIcANQCX + ADUApwA1ALcANQDHADUA1wA1AOcANQD3ADUAEF1BAwAHADUAAXFBBQAWADUAJgA1AAJxMDEB + LgE1ND4CMzIeBBUUDgQjIiY1ND4ENz4BMzIWFRQOBAcOAxUUFjMyPgQ1NC4EAQxZTxYiKRRU + yMq9klhLfqOxsUyEky9WeJKoWyExFB0qFyUxNDMVWKuHU0xaQ5aThmY9R3WYo6IFTgoNFAsQ + CwUlSWyPsWl83LmSZTZ+hkKLi4R1YiINDy8qHSQYDgsOCy97kaFTSEQ1YYejumRbl3lbQSgA + AAH//v7uBi0FYABnAP+4AGgvuABpL7gAaBC4AA3QuAANL7kAAwAH9EEhAAYAAwAWAAMAJgAD + ADYAAwBGAAMAVgADAGYAAwB2AAMAhgADAJYAAwCmAAMAtgADAMYAAwDWAAMA5gADAPYAAwAQ + XUEDAAYAAwABcUEFABUAAwAlAAMAAnG6ABsADQADERI5uABpELgAQty4ADvQuAA7L7gAQhC4 + AD7QuAA+L7gAQhC5AFMABPS4AEzQuABML7gAUxC4AFjQuABYL7gAUxC4AFvQuABbLwC4ADAv + uAAIL7gAAEVYuAAALxu5AAAACD5ZuwAmAAMAHgAEK7oAGwAeACYREjm6AFsACAAwERI5MDEF + MhYVFA4CIyIuAjU0PgQ3PgU3DgEjIi4CNTQ2MzI+BDc+ATMyFhUUDgIHDgEHBhQVFBYVERQO + AiMiJjU0Nz4FNTQmNCY1NDY3DgEHDgEHDgUCYBQPFyIpEwsPCgUCAgQDBAIECw0ODQoEab1I + LUs4HyAdRL7a7ObUVWpzFxcQK1N2SxEiEwEFCRIdFDQyLwIDAwIBAQEBBgZZyGYGFAsJDwsH + BQMXGBQbR0AtGSQpEAtScYR4YBYtaWpoWUQTGh8ZIiYMGBUXKDQ4OxogIw0RCiEsMxwHDgYG + DwgiZDr9KRwxJRUYERkSCDBCTU1EGDJ8eGgeJlomIEIdJWdBN4GMko+HAAEAef/nBZUE+ABd + AIMAuAAARVi4ADMvG7kAMwAIPlm7AAAAAQAJAAQruAAzELkAIAAB9EEhAAcAIAAXACAAJwAg + ADcAIABHACAAVwAgAGcAIAB3ACAAhwAgAJcAIACnACAAtwAgAMcAIADXACAA5wAgAPcAIAAQ + XUEDAAcAIAABcUEFABYAIAAmACAAAnEwMQEyHgIVFAYrASIOAgceARceAxUUDgIHDgMHMj4E + NzYzMhYVFAcGDAIjIi4CNTQ3PgM3NC4EJw4BIyIuAjU0NjcmNTQ2MzIWFz4DA04wYk8zHBGb + LXmFiT40flIKHhsTDhUYCyludGwoULfCxr+yTQ0KCwkQcf7x/tn+x5sdMiQVEUiIfGoqHjRE + TVAlGSgLGiITBxYTDigbER8QNJehlwT4DRcgEhMKCxIWCjWQag0nJyIJCBgaGgoob36FPRMi + MTxGJwYMCBILU4JYLg8bIhQZF2GggmYnCDJGVllXJAMDBg4WDxQdCxELDgsICAkSDwkAAAAB + AGoCLQSPAwQAJAARALgAES+7AAUAAQAeAAQrMDETMh4CMzI+Ajc+BTMyFhUUBgcOBSMiNTQ+ + An0FCRMlIg1DT0oVK3aChnVbFxELHS4RZ5Kytq1GdQIECAK8BggGBgkJAwYPDg4KBhALEysP + BhUYGhUNQggaGRIAAAAAAQAb/2IFRgW8AFAAHwC4AEAvuAAmL7sADAABAAAABCu6ABgAQAAm + ERI5MDETIjU0PgIzMh4CMzI+AjMyHgQXPgU3PgUzMh4CFRQOBgcOBRUUDgIjIi4CJy4FJw4D + j3QCBAcFBQkTJiINQVFWIR45NjErIw0DHCgvLigNGUNKS0ExCwwWDwkVJDA0NjAoDRMtMC0j + FQkVJhwdHhENCwcgKS4vKg8YRUhEAodCCBsZEgcHBwoLCk17mJeFKhZVandvXx05oKyrhlQU + Ii4ZDUFbcHZ4bFoeLGhvbmRVHDZDJQ4dMkMlGGmDkIFiFAQKCQYAAwA1AOwFdQP8ACUANwBJ + AY24AEovuABLL7gAShC4AA3QuAANL7gASxC4ACHcugAFAA0AIRESOboAGQANACEREjm5ADUA + BPRBBQAaADUAKgA1AAJxQSEACQA1ABkANQApADUAOQA1AEkANQBZADUAaQA1AHkANQCJADUA + mQA1AKkANQC5ADUAyQA1ANkANQDpADUA+QA1ABBdQQMACQA1AAFxuAANELkAQgAE9EEhAAYA + QgAWAEIAJgBCADYAQgBGAEIAVgBCAGYAQgB2AEIAhgBCAJYAQgCmAEIAtgBCAMYAQgDWAEIA + 5gBCAPYAQgAQXUEDAAYAQgABcUEFABUAQgAlAEIAAnEAuAAARVi4ABwvG7kAHAAMPlm7AEUA + AgAKAAQruwAwAAEAAAAEK7sAFAADADsABCu4ABwQuQAmAAH0QQUAGQAmACkAJgACcUEhAAgA + JgAYACYAKAAmADgAJgBIACYAWAAmAGgAJgB4ACYAiAAmAJgAJgCoACYAuAAmAMgAJgDYACYA + 6AAmAPgAJgAQXUEDAAgAJgABcTAxASIuAicOAyMiJjU0PgQzMh4CFz4BMzIeAhUUDgITIg4C + Bx4DMzI+AjU0JgUuASMiDgQVFBYzMj4CA+M8aVE3DC5hb4BNU1cqR11pbDIkQjcoClq9Zjho + TzBLdY8VIktRVy4PMz5FIDdoUjJq/esPPScvWU9DLxspIzNbXGQBZCtCTiNEfF44bWE/fnJh + RykVIy4ZZVwkRmpFTotpPQItFzRVPTJONh0pSWI5TVbEPDInQlRbWSYtJTNhjQAAAAH/K/3F + AskGeQBFAP24AEYvuABHL7gARhC4ACPQuAAjL7kAAAAE9EEhAAYAAAAWAAAAJgAAADYAAABG + AAAAVgAAAGYAAAB2AAAAhgAAAJYAAACmAAAAtgAAAMYAAADWAAAA5gAAAPYAAAAQXUEDAAYA + AAABcUEFABUAAAAlAAAAAnG4AEcQuAAv3LkAPAAG9EEFABoAPAAqADwAAnFBIQAJADwAGQA8 + ACkAPAA5ADwASQA8AFkAPABpADwAeQA8AIkAPACZADwAqQA8ALkAPADJADwA2QA8AOkAPAD5 + ADwAEF1BAwAJADwAAXEAuwAcAAMACgAEK7sAKgACAD8ABCu4ACoQuAA03DAxJRQOAgcOAyMi + JicuAzU0PgIzMh4CMzI+BDUQGgE+AjMyHgIVFA4CIyImNTQ3PgE1NCYjIg4CCgEBSgQIDAcI + FyMxIkN3RCErGAkHDhcPD0lXVx0TGhIJBQEdMUJKTyUiOy0aChckGhAYBAgLDxMcODUuIhS8 + QI6SjT4+Ty4RGxYKFRQUCQkgIBcUGBQ5XHZ4cSoBOQHWAVPdgjQhMDgXGEQ/LBUTCwsXQR4g + LD+J1/7R/nIAAAACAD4BcASiBLcAKQBXADcAuAAQL7gARS+4AFMvuwAvAAMASwAEK7sABQAD + AB0ABCu7AAsAAwAYAAQruABFELkANQAD9DAxEz4DMzIWFx4BMz4BNzYzMhUUBgcOASMiJy4B + IyIOAgcOASMiNTQ2Ez4DMzIWFx4BMzI+Ajc+ATMyFRQGBw4BIyImJy4BIyIOAgcOASMiNTQ2 + Xi5gYF4sMVcjEjEeP7RzMRkQHyF70lFZNiY9IBYyP08yFSkPHw8bKlZXWCwzYjMbOh4fQ0dL + JxgmCxEfIWGrTStNIy9PJho1OD4iFyoRIhMDH0Z0VC5ARiYiAYdyMBUSQSqbmFpAQB48Wj0a + GCQOKv7aMVc/JTY/Ih4cMkUoGRcWE0Apd30oKjkxFik5IxcVIA4oAAABAFH/gwSiBXsAdgAz + ALgAJC+4AF4vugAIACQAXhESOboAKwAkAF4REjm6AEAAJABeERI5ugBlACQAXhESOTAxASIO + AgcOAQc+AT8BPgEzMhYVFA4CBw4DBw4BBw4DIyImNTQ2PwEOAyMiLgI1NDY3PgM3PgE3DgUj + Ii4CNTQ+AjMyPgI3PgE3PgMzMhUUDgIHNjMyHgIVFA4CIyImNTQmBE0SOERNKDuCR1GTNJYG + DQYKEStFVyweTVheLxg0Gi0sGxUVCxEnNSETHx0dERUqIRQeKQ0zRFMtPHs+GUpTVks6Dhcb + DQMBCBEPEm+culwwWyoVHBcVDycaLTwjQzYlMBwKDA8PAwYPCAOgCQ4SCE6ybQwaDysCAgsO + EisqJgwIExMTCStdMlVzRx4oJjGiakIDBQMBBhEdFxMbDAQHCQsGYKdPBhASEQ4JDBQWCwsS + DQcdJykMP4NIJTckEk4QQFVjMQYJEhkQEBcPBwcPCwYAAAACACb/rgSRBU4ANABWADMAuAAA + L7sAOgADAE8ABCu7ABQAAQAeAAQruAAUELgAF9C4ABcvuAA6ELgANdC4ADUvMDEBMhYVFA4C + Bw4DBx4FMzI2MzIVFA4CIyIuBCcuATU0Njc+Azc+AwEyHgIzMj4CNz4BMzIWFRQGBw4FIyIu + AjU0NgR5Cw0OFx4RieLKv2YOXoqps7BMER0LDyErLAtipZKGho1RIhgjH27j5+ZxGyMYEfvo + CSEoKBFf1ODlcAUKBBIPFA40kaavpJAzJ0MxHBkFTg8QCxsdHAteinNnOg1DVVtMMQYMESUf + FCE5TFddLRMpGB8jFEZ9e31FEBgQCPrnAQIBDhYdDwEBDgoOHQcZKR8WDgYVHyUQDhAAAAAC + ACP/ugSBBR8ANgBYAC8AuwA8AAMAUQAEK7sAJwABAB0ABCu4AB0QuAAg0LgAIC+4ADwQuAA3 + 0LgANy8wMTcOASMiLgI1ND4CMzIXPgM3LgcjIgYjIjU0PgIzMh4CFx4BFRQGBw4DBzIeAjMy + PgI3PgEzMhYVFAYHDgUjIi4CNTQ2sggmFg4bFQ0XIiYOFQNg1djRXQo/XHF6fHFeHxEdCw4W + JzUfQqvI4noiFxwdaNnl79UJISgoEV/U4OVwBQoEEg8UDjSRpq+kkDMnQzEcGewDBgQJDwsP + IhwTFBllgZRKCis5QkI+LxwHDRgnHQ9EbohDEygZHjgXUpWAadABAgEOFh0PAQEOCg4dBxkp + HxYOBhUfJRAOEAAAAAIAYP+wAwwGGQBAAGABVrsAUgAHAAMABCu7ACAABwBDAAQruwArAAcA + NQAEK0EFABoANQAqADUAAnFBIQAJADUAGQA1ACkANQA5ADUASQA1AFkANQBpADUAeQA1AIkA + NQCZADUAqQA1ALkANQDJADUA2QA1AOkANQD5ADUAEF1BAwAJADUAAXFBBQAaAEMAKgBDAAJx + QSEACQBDABkAQwApAEMAOQBDAEkAQwBZAEMAaQBDAHkAQwCJAEMAmQBDAKkAQwC5AEMAyQBD + ANkAQwDpAEMA+QBDABBdQQMACQBDAAFxugBNADUAKxESOUEhAAYAUgAWAFIAJgBSADYAUgBG + AFIAVgBSAGYAUgB2AFIAhgBSAJYAUgCmAFIAtgBSAMYAUgDWAFIA5gBSAPYAUgAQXUEDAAYA + UgABcUEFABUAUgAlAFIAAnG4ACAQuABi3AC4AA8vuAAwL7oATQAwAA8REjkwMRMuATU0PgQ1 + ND4CMzIeAhceBRceAxUUBgcOAQcOAxUUDgIjIi4CNTQuAicuBSU2NTQuAicuAycOAxUUHgQX + HgEzMj4Cew0OIzU+NSMJFSUdHB4SDAwHHSMnIx4ICxgTDQkLHjMiCx4cExwmJwoKCwYBCA4U + DAgiLDIwKAHtEw4XHA4RGBkeFjlUNhsXJS4uKA0OEwgJHicwAnMaQiMiYHB5d20sNkMlDh0y + QyUZUGBlWkUQFioqKxgTKRU7jVccTE5JGRo4Lx8QHSYWFSgoLRoRPk1WVUsqNSMZLC85Ji0/ + RFtJZrmWahgSPUpQSj4SFBI5YIAAAP//ABf/vASkBnkAJgBHAAAABwBKAyUAAP//ABf/jQR7 + BnkAJgBHAAAABwBNAyUAAAABAV7+DAKD/8sAJAB2uwADAAUAFgAEK0EFABoAFgAqABYAAnFB + IQAJABYAGQAWACkAFgA5ABYASQAWAFkAFgBpABYAeQAWAIkAFgCZABYAqQAWALkAFgDJABYA + 2QAWAOkAFgD5ABYAEF1BAwAJABYAAXEAuAAKL7sAAAABAB4ABCswMQUyFhUUDgQjIjU0PgI3 + PgM1NCYjIg4CIyI1ND4CAh8tNx0wOzs3EhkGER4ZGSkeEQ0OCQ0MDQoTDRkoNUc2KE9HPi0Z + FQUOFBwVFTI2NhgOFAUGBRcJIB4XAAAA//8AI/9tBUIGhQImACIAAAAHAIoApgGB//8ANf+y + BKQFGAImAEIAAAAHAIoBDwAU//8AI/9tBUIHEQImACIAAAAHAN8AagE5//8ANf+yBLsF2AIm + AEIAAAAHAN8BCQAAAAIAI/4xBUIFsACJAJgAsbsAMwAEAE0ABCu4ADMQuAAF0LgABS9BBQAa + AE0AKgBNAAJxQSEACQBNABkATQApAE0AOQBNAEkATQBZAE0AaQBNAHkATQCJAE0AmQBNAKkA + TQC5AE0AyQBNANkATQDpAE0A+QBNABBdQQMACQBNAAFxALgAAC+4AABFWLgAKy8buQArAAg+ + WbsANgACAEgABCu6AHEAKwAAERI5ugCPACsAABESOboAlAArAAAREjkwMQEyHgIVFA4CFRQW + Fx4BFz4DNzYzMhUUDgIHHgMXHgMVFAYjIiYnDgMVFBYzMj4CNzYzMhYVFAYHDgMjIi4CNTQ+ + BDcuAycOAwcOAQcOAyMiLgI1NDY3PgE3DgEjIi4CNTQ+Ajc+Azc+BRMuAycOAwc+AwL2ByAh + GhETERkOFzkgOVtTUS8JBhJBaIJAFiMhJRkMGxcPHhcXLhMjTUEqGh0sZGZhKgoICAgJCyRe + am82Iz0vGx0vPEA/GhEhIygZOGt2ilYZMiIOEA0MCgsdGhIXFgUZExYeChgnHRAQMl5NH0M/ + OBMKJjA0MSlgFCcjHgsfTE5HGStwdGsFsAQNGRUJHCYsGTJzNl3acw4YFhcNAw0LLjc3E09w + WE0sFBwVEAcPFAcJHVBWViQSHRsyRSoKDwsMGw4tTTkgDRwqHSVOTEc9MhAbUGuHUhIdHBwQ + PI1eJjYkERspMBUpSzYMOCkCAhMcIA0UDgYGDUCJgW8mFFpweGJA/JJJl5GGOEKrsKU9BxQW + FgAAAgA1/k4FCQQEAFsAdAGnuwBsAAQAUwAEK7sAIwAEAD0ABCu7ABIABABcAAQrQQUAGgBc + ACoAXAACcUEhAAkAXAAZAFwAKQBcADkAXABJAFwAWQBcAGkAXAB5AFwAiQBcAJkAXACpAFwA + uQBcAMkAXADZAFwA6QBcAPkAXAAQXUEDAAkAXAABcbgAXBC5AAwAB/S6AAYAXAAMERI5QQUA + GgA9ACoAPQACcUEhAAkAPQAZAD0AKQA9ADkAPQBJAD0AWQA9AGkAPQB5AD0AiQA9AJkAPQCp + AD0AuQA9AMkAPQDZAD0A6QA9APkAPQAQXUEDAAkAPQABcbgAXBC4AEnQugBfAFwAEhESOUEh + AAYAbAAWAGwAJgBsADYAbABGAGwAVgBsAGYAbAB2AGwAhgBsAJYAbACmAGwAtgBsAMYAbADW + AGwA5gBsAPYAbAAQXUEDAAYAbAABcUEFABUAbAAlAGwAAnG4ABIQuAB23AC4AAAvuAAARVi4 + ABwvG7kAHAAIPlm7ACYAAgA4AAQruwBuAAIATgAEK7oABgAcAAAREjm6AEkAHAAAERI5ugBf + ABwAABESOTAxATIWFRQGBzYyMzIWFRQGBwYUFRQeAhcWFRQGIyInDgMVFBYzMj4CNzYzMhYV + FAYHDgMjIi4CNTQ+BDcuAycOAyMiLgI1ND4GAz4BNy4BIyIGBw4FFRQzMj4EA/QoJgMCBw4I + JSU8NQEHDhQNCBsaEREjUkYvGh0sZGZhKgoICAgJCyReam82Iz0vGyU7SUlBFQ0XEw4DUcTM + yFUjMiIQOmOGl6KcjwIDHSIGDAYMGA5PsKycd0YnH2aAkJCIBAQdJgoPBgIgGjSDSwcOCCZz + f3wuHhkjLyIcUVtcJRIdGzJFKgoPCwwbDi1NOSANHCodK1lVTj4sCSRdZmkxV6J9TBgqNyA5 + ho2Pg3JUMP5gVZAsAQEDBRlmgpSOfSslID1WbH8AAAD//wA5/88FfAbnAiYAJAAAAAcAjwBM + AMv//wA1/+MEQgYcAiYARAAAAAYAj8oAAAD//wA5/88FfAaoAiYAJAAAAAcAZwBCAMP//wA1 + /+MEQgXlAiYARAAAAAYAZ8oAAAD//wA5/88FfAYzAiYAJAAAAAcA4ACBAJP//wA1/+MEQgVf + AiYARAAAAAYA4AK/AAD//wA5/88FfAbJAiYAJAAAAAcA3gB/AN3//wA1/+MEQgXsAiYARAAA + AAYA3gIAAAD//wCH/7IFmgclAiYAJQAAAAcA3gDLATn//wA1/4EGrgZIACYARQAAAAcAbgT2 + AAD//wAf/7IFmgVcAgYAqwAAAAIANf+BBcYGSABgAHkBnrsAdwAHAEwABCu7AC4ABQBWAAQr + uABWELgACtC4AAovuABWELgADdC4AA0vuABWELgAENC4ABAvuABWELkAKQAG9LgAGNC4ABgv + uAApELgAG9C4ABsvuAApELgAMdC4ADEvuAApELgAM9C4ADMvuABWELgAQNC4AEAvuABWELgA + aNC4AGgvuABWELgAa9C4AGsvQSEABgB3ABYAdwAmAHcANgB3AEYAdwBWAHcAZgB3AHYAdwCG + AHcAlgB3AKYAdwC2AHcAxgB3ANYAdwDmAHcA9gB3ABBdQQMABgB3AAFxQQUAFQB3ACUAdwAC + cbgALhC4AHvcALgAEy+4ADgvuAAARVi4AEcvG7kARwAIPlm7AAUAAQBaAAQruwBTAAEAbgAE + K7oAQAA4ABMREjm6AFYAbgBTERI5uABHELkAYQAB9EEhAAcAYQAXAGEAJwBhADcAYQBHAGEA + VwBhAGcAYQB3AGEAhwBhAJcAYQCnAGEAtwBhAMcAYQDXAGEA5wBhAPcAYQAQXUEDAAcAYQAB + cUEFABYAYQAmAGEAAnEwMQEyHgIzMj4CNz4BNTQmNTQ2MzIeAhUUBgc+AzMyFhUUBgcOAQcO + AxUUEhcWFRQOAiMiLgI1NDY3DgUjIi4CNTQ+BDMyFhc3DgEjIjU0PgIBMj4ENz4BNy4BIyIO + BhUUFgLlBQkTJSIMPklJGAIBBA8VDxsVDQMCKkU9NxwRCx4uGm1OAwYEAwwPAxMdIQ4REQkB + AQIdXXaJkpRGUWo+GF2VuruoOUdZGgc4fEN1AgQI/mw5fIKCfnY0AgMDFUIwKWx4fndpTi47 + BNkGCAYFCAgDRGgfJzMTIBMdNUwvFUkwBgwJBRALEysQCR8QP46Xnk+M/v9nEhAhMSERHDtb + PyuBTBlMVlZFKyI7UC1QqJ6MaT0WEfcICUIIGhkS+30gN0hPUSVOmVcLFCQ/U11kXlUgOD8A + AAD//wDT/+cF7wY9AiYAJgAAAAcAigDNATn//wA1/+MEYgUEAiYARgAAAAcAigDGAAD//wDT + /+cF7wcRAiYAJgAAAAcA3wC0ATn//wA1/+MEdwXYAiYARgAAAAcA3wDFAAD//wDT/+cF7wZv + AiYAJgAAAAcA4ADBAM///wA1/+MEYgWgAiYARgAAAAYA4A4AAAAAAgDT/t0F7wVIAIYAtgGX + uwAcAAcAdgAEK7sAOAAEAFIABCu4ABwQuAAQ0LgAEC+4ABwQuAAV0LgAFS9BBQAaAFIAKgBS + AAJxQSEACQBSABkAUgApAFIAOQBSAEkAUgBZAFIAaQBSAHkAUgCJAFIAmQBSAKkAUgC5AFIA + yQBSANkAUgDpAFIA+QBSABBdQQMACQBSAAFxuAB2ELgAXdC4AF0vuAAcELkAaQAG9LgAYtC4 + AGIvuAB2ELgAbtC4AG4vuAB2ELgAcdC4AHEvuAB2ELgAc9C4AHMvALgAeS+4AABFWLgAQC8b + uQBAAAg+WbgAAEVYuABCLxu5AEIACD5ZuAAARVi4AEUvG7kARQAIPlm4AABFWLgAWi8buQBa + AAg+WbsAOwACAE0ABCu7AAAAAQAJAAQruABaELkAIAAB9EEhAAcAIAAXACAAJwAgADcAIABH + ACAAVwAgAGcAIAB3ACAAhwAgAJcAIACnACAAtwAgAMcAIADXACAA5wAgAPcAIAAQXUEDAAcA + IAABcUEFABYAIAAmACAAAnG6AFcARQB5ERI5MDEBMh4CFRQGKwEiDgQHHgMVFAYUBhQGHQEU + FjMyLAI3NjMyFhUUBw4BBwYHDgUVFBYzMj4CNzYzMhYVFAYHDgMjIi4CNTQ+AjcGBCMiJjU0 + PgI1ND4ENTQuAicuATU0Ny4BNTQ2MzIeAhceARc3PgMBIg4EBw4FIyIuAjU0PgIzMj4CNz4B + MzIeAhUUDgIjIiY1NCYDqDBiTzMcEZspbnqAd2klAwQDAgECARwgeAETARcBDXQNCQsJEDBm + NwEEFzg4NSkZGh0sZGZhKgoICAgJCyReam82Iz0vGxorOB6r/pK4S0IICQgBAQIBAQIDBQMM + ChACAxAKBhUWFAUDBQIcNJmkmgGvDT5QWlRFExNIWGBWQg8XGw0DAQgRDw9Ob4lLkNNLJTAc + CgwPDwMGDwgE+A0XIBITCgoQFBMQBSBAOzMTDkxib2ROEcokFClJYzoGDAgSCyM/HAICEDE7 + QUI+GxIdGzJFKgoPCwwbDi1NOSANHCodJElIRB4+P0FCECktLhYPOkpVUUkaH1locDUGGBEX + EBM3ETUtEhshDgoYDgcJEw8K/nsLEBQTEAQEEBMUEQoMFBYLCxINBxQdIg4cFwkSGRAQFw8H + Bw8LBgACADX+ogRiA74AWABpAfi7ABEABwBSAAQruwArAAQARQAEK7sABQAFAGAABCu6AA8A + UgAFERI5QSEABgARABYAEQAmABEANgARAEYAEQBWABEAZgARAHYAEQCGABEAlgARAKYAEQC2 + ABEAxgARANYAEQDmABEA9gARABBdQQMABgARAAFxQQUAFQARACUAEQACcUEhAAYAKwAWACsA + JgArADYAKwBGACsAVgArAGYAKwB2ACsAhgArAJYAKwCmACsAtgArAMYAKwDWACsA5gArAPYA + KwAQXUEDAAYAKwABcUEFABUAKwAlACsAAnG4AAUQuAA40LgAOC+6AEoAUgAFERI5ugBZAFIA + BRESOUEFABoAYAAqAGAAAnFBIQAJAGAAGQBgACkAYAA5AGAASQBgAFkAYABpAGAAeQBgAIkA + YACZAGAAqQBgALkAYADJAGAA2QBgAOkAYAD5AGAAEF1BAwAJAGAAAXG4AAUQuABr3AC4AABF + WLgATS8buQBNAAg+WbsALgACAEAABCu7AAAAAgBjAAQruABNELkAFgAD9EEhAAcAFgAXABYA + JwAWADcAFgBHABYAVwAWAGcAFgB3ABYAhwAWAJcAFgCnABYAtwAWAMcAFgDXABYA5wAWAPcA + FgAQXUEDAAcAFgABcUEFABYAFgAmABYAAnG6AEoATQAWERI5MDEBMh4CFRQOBCMiJicGFRQe + AjMyPgI3NjMyFRQOAgcOBRUUFjMyPgI3NjMyFhUUBgcOAyMiLgI1ND4CNw4BIyIuAjU0PgQB + PgU1NCYjIg4EA3k0Si4WWI6wsZ41HScGHxc0VT5Ztq2fQhkMCjBMYTEXNzg1KhkaHSxkZmEq + CggICAkLJF5qbzYjPS8bEyArGC5cLz6BaEJUibG6tP3LWrOjjGc6KSMsb3p+dWUDvhUlMh0x + amRZQyckF0ZBIz8vGzBQajsWDRlFT1IlETE7QUE+GxIdGzJFKgoPCwwbDi1NOSANHCodHj4+ + PBsPER5DbU9dsJyCXzT+MBM2PUE8NRMRHhowRFRiAAD//wDT/+cF7wclAiYAJgAAAAcA3gDB + ATn//wA1/+MEYgXsAiYARgAAAAYA3g4AAAD//wA5/iUFKQceAiYAKAAAAAcAZwCaATn//wAl + /VQDogXlAiYASAAAAAYAZ9AAAAD//wA5/iUFKQcRAiYAKAAAAAcA3wDJATn//wAl/VQEIAXY + AiYASAAAAAYA324AAAD//wA5/iUFKQZKAiYAKAAAAAcA4ADVAKr//wAl/VQDogWgAiYASAAA + AAYA4AgAAAD//wA5/gwFKQU3AiYAKAAAAAcA9gFOAAD//wAl/VQDogX8AiYASAAAAAcAbQC+ + ADf//wBU/u4FXgceAiYAKQAAAAcAZwEQATn//wDE/6MD/AY/AiYASQAAAAYAZ39aAAAAAgA6 + /u4FXgV/AJUAogEwugBjAIYAAyu7ADsABAAcAAQruAA7ELgALtC4AC4vuAA7ELgAMNC4ADAv + uAA7ELgASdC4ABwQuABb0LgAHBC4AF7QuABeL0EbAAYAYwAWAGMAJgBjADYAYwBGAGMAVgBj + AGYAYwB2AGMAhgBjAJYAYwCmAGMAtgBjAMYAYwANXUEFANUAYwDlAGMAAl24AGMQuABr0LgA + ay+4AGMQuQB8AAf0uAB/0LgAfy+4ABwQuACW0LgAli+4AGMQuACd0LgAnS+4ADsQuACk3AC4 + AHAvuAAARVi4ACQvG7kAJAAOPlm7ABUAAQCOAAQruAAVELgAANC4AAAvuAAVELgABdC4AAUv + uAAVELgACNC4AAgvugB/AHAAJBESObgAjhC4AJrQuACaL7oAnQBwACQREjkwMRMyHgIzOgE3 + PgMzMh4CFRQGBz4FNz4DNz4BMzIeAhUUBgcGFRQXPgEzMhYVFA4CBxU+AzMyFhUUDgIHERQO + AiMiJjU0Nz4FNTQmNQ4DBw4DBzIWFRQOAiMiLgI1ND4ENz4BNwcOASMiJjU0PgI3PgE3IyI1 + ND4CBTUGBAcOAQc+AzdXCQ4fPDcIHRMIDg4NCAcbGxMJB0x5Yk9GQSMBBwkLBxc1DgYNCwcY + FQMDJkklGhMPKks7M0UtGQgvITBOZDQJEh0UNDIvAgMDAgEBAmWZhoNPBgcFAgEUDxcjKRIL + DwoFAgMEBAMBAQQDRBkqDgwNHDFEKQgOBzW8AwYLA4Fo/uSrCA8GNHyDhT4ESQUHBQE/VzcZ + ERshERRCLAQIBwYFBQMgPzcsDC0fExocCRMQBg4dLD8CAw0JChQSEgiOBgcEAQgODhcVEwn9 + sB82KRcbEhwVCjVJVVVMGy9wOxQjJCYXUKaimEMcFx9RSTIcKi8SDF2BlYlsGRQsFhYjLSUr + GysjHQ1LfzY1BxYUDtSODhkFMnA9Dh4cGwsAAf+3/6MD1QYzAGgBgroATwBkAAMruwAzAAUA + QgAEK0EZABYATwAmAE8ANgBPAEYATwBWAE8AZgBPAHYATwCGAE8AlgBPAKYATwC2AE8AxgBP + AAxdQQMABgBPAAFdQQUA1QBPAOUATwACXbgATxC5AFoABvS4AArQuAAKL7gAWhC4AA/QuAAP + L7gATxC4ABXQuAAVL7gATxC4ABjQuAAYL7gATxC4ACjQuAAoL7oAKQBkAE8REjlBBQAaAEIA + KgBCAAJxQSEACQBCABkAQgApAEIAOQBCAEkAQgBZAEIAaQBCAHkAQgCJAEIAmQBCAKkAQgC5 + AEIAyQBCANkAQgDpAEIA+QBCABBdQQMACQBCAAFxuABPELgAStC4AEovuABaELgAVdC4AFUv + uABaELgAX9C4AF8vuAAzELgAatwAuAASL7gAUi+4AABFWLgAOi8buQA6AAg+WbsABQABAGIA + BCu7AC4AAwBFAAQruAAFELgACtC4AAovugApAFIAEhESObgAYhC4AF/QuABfLzAxAzIeAjMy + PgI3LgI0NTQ2MzIWFRwBFz4DMzIWFRQGBw4DBxM+AzMyHgIVHAEOAyMiLgI1NBI1NCYjIg4C + BxQeAhUUBiMiJjU0PgI1NC4CJw4BIyI1ND4CNwUJEyUiCCAqLxgBAQETHh8aAj9iUUYjEQse + LhA4TF83BSxygIZAK0QwGQMFCQ4KCxgVDg86OTN6fHMrAQEBIyIUIQQEBAEBAgEmUCp0AgQH + BNEHBwcCBAUDN1xFKwYrNUc4DXZaCRAMCBALEyoQBhETFAj+iTBcSCwcSn9kR5mThGQ7BhIi + HEEBH+BRRChDVi1Fg3RhJGpvHikKKVqcflCwtbJRBANBCRoZEgD///+q/48DIwbuAiYAKgAA + AAcAdP82AWT///9W/+4CzwWKAiYA2wAAAAcAdP7iAAD///+8/48CrwZxAiYAKgAAAAcAiv8k + AW3///+V/+4CiAUEAiYA2wAAAAcAiv79AAD///+S/48CtwcRAiYAKgAAAAcA3/8FATn///9x + /+4ClgXYAiYA2wAAAAcA3/7kAAAAAf/w/k4CPwVkAEYBIrsADQAEACcABCu7AEQABgA0AAQr + uABEELgAANC4AAAvQQUAGgA0ACoANAACcUEhAAkANAAZADQAKQA0ADkANABJADQAWQA0AGkA + NAB5ADQAiQA0AJkANACpADQAuQA0AMkANADZADQA6QA0APkANAAQXUEDAAkANAABcbgANBC5 + ADwAB/S4AAPQuAADL0EhAAYADQAWAA0AJgANADYADQBGAA0AVgANAGYADQB2AA0AhgANAJYA + DQCmAA0AtgANAMYADQDWAA0A5gANAPYADQAQXUEDAAYADQABcUEFABUADQAlAA0AAnG4ADQQ + uAAs0LgALC+4ADQQuAAv0LgALy8AuAA5L7gAAEVYuAAILxu5AAgACD5ZuwAQAAIAIgAEKzAx + ATIWFRQOAiMOAxUUFjMyPgI3NjMyFhUUBgcOAyMiLgI1ND4CNy4BNTwBPgE3NhI+ATMyFhUU + BgcOAxUUFgFtGRUUISwZIUM2IhodLGRmYSoKCAgICQskXmpvNiM9Lxs2UV4oBQEBAQEHDA8U + DzAuDRcFBgMCAgErNSYmTD0nHktNTB8SHRsyRSoKDwsMGw4tTTkgDRwqHTVuZFUbI3pkL2Rc + ShbCARazVE1LI188O3+AfzpIegAAAAAC/7b+TgIFBaAAQQBPAYS7ABsABAA1AAQruwBFAAcA + SwAEK0EFABoASwAqAEsAAnFBIQAJAEsAGQBLACkASwA5AEsASQBLAFkASwBpAEsAeQBLAIkA + SwCZAEsAqQBLALkASwDJAEsA2QBLAOkASwD5AEsAEF1BAwAJAEsAAXG6AD0ASwBFERI5uAA9 + L0EFABoAPQAqAD0AAnFBIQAJAD0AGQA9ACkAPQA5AD0ASQA9AFkAPQBpAD0AeQA9AIkAPQCZ + AD0AqQA9ALkAPQDJAD0A2QA9AOkAPQD5AD0AEF1BAwAJAD0AAXG5AAUAB/S4AD0QuQAKAAf0 + uAAP0LgADy9BIQAGABsAFgAbACYAGwA2ABsARgAbAFYAGwBmABsAdgAbAIYAGwCWABsApgAb + ALYAGwDGABsA1gAbAOYAGwD2ABsAEF1BAwAGABsAAXFBBQAVABsAJQAbAAJxALgAAEVYuAAU + Lxu5ABQACD5ZuAAARVi4ABYvG7kAFgAIPlm7AB4AAgAwAAQruwBCAAMASAAEKzAxATIeAhUU + DgIVFB4CFRQOAiMiJw4DFRQWMzI+Ajc2MzIWFRQGBw4DIyIuAjU0PgI3LgE1NBI+ARMyFhUU + BiMiJjU0PgIBAA0hHhQICwgDAwMFDx0XEQ0hQzciGh0sZGZhKgoICAgJCyReam82Iz0vGzpV + YScFBAUNGDctLUU2LjASIi4DthUgJxILXYadS2F5SCMJDBQOCA0eS01MIBIdGzJFKgoPCwwb + Di1NOSANHCodN3FnVRoeTi6jAQ/DawHqOyw5QjcwFywjFQAA//8Aw/+PAZ0G2QImACoAAAAH + AOD/EQE5//8A9f9xBY0FZgAmACoAAAAHACsCXAAA//8Apv3FA6gFoAAmAEoAAAAHAEsCGwAA + ////yf9xA8UHHgImACsAAAAHAGcASAE5AAL/K/3FAkoF5QA6AGQAkrsABwAGACwABCtBBQAa + ACwAKgAsAAJxQSEACQAsABkALAApACwAOQAsAEkALABZACwAaQAsAHkALACJACwAmQAsAKkA + LAC5ACwAyQAsANkALADpACwA+QAsABBdQQMACQAsAAFxugBTACwABxESOQC4AD4vuABaL7gA + AC+7ACUAAwARAAQrugBTAAAAPhESOTAxATIeBBUUDgIHDgMjIiYnLgM1ND4CMzIeBDMyPgQ1 + NC4ENTQmNTQ+AgM+ATMyFhceAxceARUUDgIjIi4CJw4DBwYjIiY1NDY3PgMBEhwmGQ4HAQQI + DAkIGig3JUqESiUvGwoFDhYSDC89RUQ+FxYfFAsGAQYICwgGAQIIDg0LJRQRHgYPKzAyFhQR + CxIXCwszQEMZGD9HTSUWDw4NEBEPO0dKA8tXiquqlzBBkpeTQD5PLhEbFgoVFBMKCSAgFwkP + EA8JOl13eXEqIm6BiXldFhQrFRUnHBEB8xQTDxEqSDotDw4cDQwUDwkmRmA7L19dWCgXHRUX + MhMQQlZjAAD//wB//gwFxQUZAiYALAAAAAcA9gDjAAD//wCk/gwEBAZkAiYATAAAAAYA9gQA + AAAAAQCk/5YEBAQQAFcA0LsAJAAGAD8ABCtBIQAGACQAFgAkACYAJAA2ACQARgAkAFYAJABm + ACQAdgAkAIYAJACWACQApgAkALYAJADGACQA1gAkAOYAJAD2ACQAEF1BAwAGACQAAXFBBQAV + ACQAJQAkAAJxuAA/ELkAKQAH9LgAPxC4AC/QuAAvL7gAPxC4ADTQuAA0L7gAPxC4ADrQuAA6 + L7gAJBC4AEnQuABJL7gAJBC4AEzQuABMLwC4AEQvugASACwAAyu4ABIQuAAV0LgAFS+4ABIQ + uQAcAAH0MDEBMhYVFAYHDgMHHgUzMjYzMhUUDgIjIi4CJy4BJx4DMRQGIyImJy4DJy4BNTQ2 + NzQuAjU0PgIzMh4CFRQGFT4FNz4DA+MLEiYuHoGbnjwLKj1SY3ZEKzwRExswQyhckXhmMQgS + CQQJBwQnGh0SBAECAwMBERQUEQEBAQIKExEUFgoCAS53fnxmRwoVHRURA9UPFBUxIBU6Q0gi + DzlDRjklCg4MJSQaLk9oOgkMBYC1czY9Njg8Dl6QuGcCCxQOGg0XODk3FypHMhwlP1QvI0IW + FjM1MyoeBQsPCgUAAAD//wCm/7IE1gajAiYALQAAAAcAjwDXAIf////v/40CMAeXAGYATQDv + QAA2JwAHAI/+twF7//8Apv3SBNYFSgImAC0AAAAHAPYAkf/GAAIAff4MAaIGagAvAFQAzrsA + CAAGACIABCtBIQAGAAgAFgAIACYACAA2AAgARgAIAFYACABmAAgAdgAIAIYACACWAAgApgAI + ALYACADGAAgA1gAIAOYACAD2AAgAEF1BAwAGAAgAAXFBBQAVAAgAJQAIAAJxuAAIELgABdC4 + AAUvuAAiELkAEQAH9LgAIhC4ABvQuAAbL7gAIhC4ACvQuAArL7gACBC5ADMABfS4AAgQuABG + 0LgARi+4ACIQuABQ0LgAUC8AuAA6L7gAAC+4ABYvuwAwAAEATgAEKzAxEzIeAhUUBhUUHgYV + FA4CIyIuAjU0LgQ1PAI2NDY8ATU0PgITMhYVFA4EIyI1ND4CNz4DNTQmIyIOAiMiNTQ+AvwT + FwwEAQMEBgcGBAMZIiIJCQwGAgEBAgEBAQEBCRJTLTcdMDs7NxIZBhEeGRkpHhENDgkNDA0K + Ew0ZKAZqFiMtFxEiDg53tN3m3rR6Dh0zJhYUHycTDTVHUlJNHxdoi6OmnH1SCRIyLiH5YUc2 + KE9HPi0ZFQUOFBwVFTI2NhgOFAUGBRcJIB4XAP//AKb/sgTWBUoCJgAtAAAABwBuAi//Gv// + AM3/jQM/BmoAJgBNAAAABwBuAYcAAP//AKb/sgTWBUoCJgAtAAAABwCSAUgAj///AM3/jQM8 + BmoAJgBNAAAABwCSAM8AAP//ANb/hwUMB1UCJgAvAAAABwCPAIUBOf//AM3/yQP6BnACJgBP + AAAABgCPcVQAAP//ANb+DAUMBbACJgAvAAAABwD2AO4AAP//AM3+DAP6A+MCJgBPAAAABgD2 + cwAAAP//ANb/hwUMByUCJgAvAAAABwDeAL4BOf//AM3/yQP6BewCJgBPAAAABgDeRgAAAP// + AHb/yQP6BhMCJgBPAAAABwD2/xgGSAABANb+DgUMBbAAfgDkuwAbAAcAJAAEK7sAXgAHAAUA + BCu4AF4QuQAAAAX0QQUAGgAFACoABQACcUEhAAkABQAZAAUAKQAFADkABQBJAAUAWQAFAGkA + BQB5AAUAiQAFAJkABQCpAAUAuQAFAMkABQDZAAUA6QAFAPkABQAQXUEDAAkABQABcboACAAF + AF4REjm4ABsQuQApAAX0uAAkELgALtC4AC4vuAAFELgARdC4AEUvuAAAELkAYwAE9LgAW9C4 + AFsvuABeELgAgNwAuABPL7sAegADAGgABCu7AEIAAwALAAQrugAIAAsAQhESOTAxBTQuAjU0 + NjUOASMiLgQnLgMjIgYVERQGIyImJy4BNTQ+AjUuAzU0PgIzMh4CFx4DFx4DMzI2Nz4FNz4B + MzIeAhUUDgQHDgEVFB4CFRQOAiMiLgQ1NDYzMhYXHgMzMj4CBHUOEg4BFjgrI1hcXE48DhUp + JR0HEAsLFRclCg4KCgwKDxIKAwIHDgsPHRsaCwssTXVVVG9MMhccIgwIEQ8ODAoEBRERBxcU + DwYIDAoKAwsKCg0KHkVxUjhrYFE8ISERESsPH01SUiQrRC0YOVy1nXoiBAcDFyMyT2BbSxMa + MCQVLyP7/hYRIjI8kVVf1uf1fSE/NioNDBcSCxcqOCEiVGmCT05YKgkhHFqOcV1TTy04QRIb + HwwIMEJOTkgbashdccilfidipHZDHjJBRkQdHSQUGTRKLhYfRnQAAQDN/cUD+APjAF0A5bgA + Xi+4AF8vuAA13LkAAAAE9LgAXhC4ABzQuAAcL7kADQAE9EEhAAYADQAWAA0AJgANADYADQBG + AA0AVgANAGYADQB2AA0AhgANAJYADQCmAA0AtgANAMYADQDWAA0A5gANAPYADQAQXUEDAAYA + DQABcUEFABUADQAlAA0AAnG4AArQuAAKL7gAHBC4ABXQuAAVL7gADRC4ACbQuAAmL7gADRC4 + ACnQuAApLwC4ACEvuAAwL7gAAEVYuAASLxu5ABIACD5ZuwBWAAMAQgAEK7gAMBC5AAMAA/S6 + ACkAEgAhERI5MDEBNCYjIg4EBwYUFRQOAiMiJjU0PgQ1ND4CMzIeAhUUBhU+BTMyHgIVERwB + DgMHDgMjIiYnLgM1ND4CMzIeBDMyPgQ1A4AZHw9JX21mVhgCChUgFxsQAQECAQEJEh4VDBUO + CAIbSFNZVlAgJko6IwEDBQcFCB8tOyVKhUklLxsKBQ4WEgwvPEZEPhcTHBIKBQECtlJEIjhL + U1UmPn07V2w7FDorCk51kJiWQS1SPiQZKzceFEQtGz49OSsaLUhcL/6DKnB+hH1wKT5XNxkb + FgsUFBMKCSAgFwkPEA8JKEJXX2ArAAAA//8AOf/4BR8GPQImADAAAAAHAIoAmgE5//8ANf/j + BHsFBAImAFAAAAAHAIoAtAAA//8AOf/4BR8HEQImADAAAAAHAN8AgQE5//8ANf/jBH8F2AIm + AFAAAAAHAN8AzQAA//8AOf/4BR8HFQImADAAAAAHAOMAbwDf//8ANf/jBHsGNgImAFAAAAAG + AONWAAAA//8Ad/89BRsHvAImADMAAAAHAI8ALQGg//8Av//TBLoGLAImAFMAAAAGAI9vEAAA + //8Ad/4MBRsFSAImADMAAAAGAPZ/AAAA//8Av/4MBLoD2wImAFMAAAAGAPZ5AAAA//8Ad/89 + BRsHdQImADMAAAAHAN4AUgGJ//8Av//TBLoF7AImAFMAAAAGAN5MAAAA//8ATv/bBZEHVQIm + ADQAAAAHAI8AlgE5//8ASP/TBAwGHAImAFQAAAAGAI/SAAAA//8ATv/bBZEHHgImADQAAAAH + AGcAlgE5//8ASP/TBAwF5QImAFQAAAAGAGfSAAAAAAEATv4vBZEFRgB3Adi7AE8ABQBJAAQr + uwAnAAUAPQAEK7sAIAAFAFsABCu6ABYASQAgERI5QQUAGgA9ACoAPQACcUEhAAkAPQAZAD0A + KQA9ADkAPQBJAD0AWQA9AGkAPQB5AD0AiQA9AJkAPQCpAD0AuQA9AMkAPQDZAD0A6QA9APkA + PQAQXUEDAAkAPQABcUEhAAYATwAWAE8AJgBPADYATwBGAE8AVgBPAGYATwB2AE8AhgBPAJYA + TwCmAE8AtgBPAMYATwDWAE8A5gBPAPYATwAQXUEDAAYATwABcUEFABUATwAlAE8AAnFBBQAa + AFsAKgBbAAJxQSEACQBbABkAWwApAFsAOQBbAEkAWwBZAFsAaQBbAHkAWwCJAFsAmQBbAKkA + WwC5AFsAyQBbANkAWwDpAFsA+QBbABBdQQMACQBbAAFxuAAgELgAedwAuAAARVi4AEQvG7kA + RAAIPlm7ADgAAQAsAAQruwAAAAEADQAEK7sAGwACAGAABCu4AEQQuQBUAAH0QSEABwBUABcA + VAAnAFQANwBUAEcAVABXAFQAZwBUAHcAVACHAFQAlwBUAKcAVAC3AFQAxwBUANcAVADnAFQA + 9wBUABBdQQMABwBUAAFxQQUAFgBUACYAVAACcTAxATIeAhUUDgIjIiY1DgcHPgMzMh4CFRQO + AgcWFRQOAiMiLgI1NDMyHgIzMj4CNTQnDgMjIi4CNTQ2MzIWFRQeAjMyPgQ1NC4CIyIOBCMi + LgI1ND4ENz4DBNUVLCYYER0pGA8THm6OpKObfVUMd/zpwz5gf00fN2CDTCFOgalbOFY6HhUJ + ECA6M2KebzsLRZOVkUNJgF43GQ8OGB5BZ0hl1s22ilAlQls2Qq26uZtwFBAcFAwnRmJ1hkh2 + yJdiBUYSGhsJBRkaFA4RAiM6TlhdW1MhGy0fES1LZDYwZGBaKDlPZat8RRwtOh0tGyAbQ2yK + SCQeIDQmFCI/WTYUICgzCh4bEzNTam5pKBcrIBMUHiMeFA4jOCoTPEtVV1QlPU4tEQAAAQBI + /i8EDAPwAGMBg7gAZC+4AGUvuAAX3LgAZBC4ADXQuAA1L7kAHwAF9EEhAAYAHwAWAB8AJgAf + ADYAHwBGAB8AVgAfAGYAHwB2AB8AhgAfAJYAHwCmAB8AtgAfAMYAHwDWAB8A5gAfAPYAHwAQ + XUEDAAYAHwABcUEFABUAHwAlAB8AAnG4ABcQuQBOAAX0QQUAGgBOACoATgACcUEhAAkATgAZ + AE4AKQBOADkATgBJAE4AWQBOAGkATgB5AE4AiQBOAJkATgCpAE4AuQBOAMkATgDZAE4A6QBO + APkATgAQXUEDAAkATgABcQC4AAAvuAAARVi4AD8vG7kAPwAIPlm7ADAAAQAkAAQruwAUAAIA + UQAEK7gAFBC5AFYAA/S6AA8AFABWERI5uAA/ELkARwAD9EEhAAcARwAXAEcAJwBHADcARwBH + AEcAVwBHAGcARwB3AEcAhwBHAJcARwCnAEcAtwBHAMcARwDXAEcA5wBHAPcARwAQXUEDAAcA + RwABcUEFABYARwAmAEcAAnEwMQEyHgIVFAYHDgUHPgMzMhYVFA4CBx4BFRQOAiMiLgI1NDMy + HgIzMj4CNTQmJw4FIyIuAjU0NjMyPgQ1NCYjIg4CIyIuAjU0PgYC9BIdFAsVIzJ2eHNgRQ0i + hKWzUYB4HjRIKx8fToGpWzhWOh4VCRAgOjNinm87EBI1dXVvYEwXGB4QBSAfQKSpon5NRVlp + x6mEJg4YEgsuTWdxdmtaA/APFRkJFRgGCSczPkNDHwkgHxZYWilNSEEeI2c2Zat8RRwtOh0t + GyAbQ2yKSCBBFCA3LCMXDBghJA0aCyI6TlhcLCkkHyYfCRUkHCFKS0pDOSkYAAAC//791QUO + BWAARwBsAV64AG0vuABuL7gAbRC4AC7QuAAuL7kAIQAH9EEhAAYAIQAWACEAJgAhADYAIQBG + ACEAVgAhAGYAIQB2ACEAhgAhAJYAIQCmACEAtgAhAMYAIQDWACEA5gAhAPYAIQAQXUEDAAYA + IQABcUEFABUAIQAlACEAAnG4AADQuAAAL7gAbhC4AEvcuQBeAAX0QQUAGgBeACoAXgACcUEh + AAkAXgAZAF4AKQBeADkAXgBJAF4AWQBeAGkAXgB5AF4AiQBeAJkAXgCpAF4AuQBeAMkAXgDZ + AF4A6QBeAPkAXgAQXUEDAAkAXgABcboACABLAF4REjm4ABzQuAAcL7gAIRC4ACnQuAApL7oA + MwAuACEREjm4ACEQuABI0LgASC8AuAAAL7gAUi+4AABFWLgAKS8buQApAAg+WbsASAABAGYA + BCu7AD4AAwA2AAQrugAIAFIAABESOboAMwA2AD4REjkwMQEyHgIVFAYHPgM3PgMzMhYVFA4E + Bw4DFRQeAhUUBiMiLgI1ND4CNw4BIyIuAjU0NjMyPgI3PgMTMhYVFA4EIyI1ND4CNz4DNTQm + IyIOAiMiNTQ+AgKRDxMLBQEBKldRRxo2UTonCxcQRm6Jh3clBQYDAhATEBAZGDMpGwQGCgZn + uEctSzgfIB0udYeVTgcSExMhLTcdMDs7NxIZBhEeGRkpHhENDgkNDA0KEw0ZKAVgHjA7HBAd + DQoVFBIHDhgSCw0REzU7OzEjBT2Kgm0fc6p3SBEcKjR80Z4wb3Z5OhodGSImDBgVCxMbEDZc + Qib6NEc2KE9HPi0ZFQUOFBwVFTI2NhgOFAUGBRcJIB4XAAACAAL+DAMOBYsATQByARS7ADIA + BwA/AAQrQSEABgAyABYAMgAmADIANgAyAEYAMgBWADIAZgAyAHYAMgCGADIAlgAyAKYAMgC2 + ADIAxgAyANYAMgDmADIA9gAyABBdQQMABgAyAAFxQQUAFQAyACUAMgACcbgAMhC5AEQABvS4 + AAvQuABEELgAENC4ABAvuAAyELgAGtC4ABovuAAyELgAH9C4AB8vuAAyELgAZNC4AGQvuAAg + 0LgAIC+4AGQQuAA30LgANy+4ADIQuQBRAAX0uABEELgAbtC4AG4vALgAFS+4AFgvuAA6L7sA + TgABAGwABCu7AAsAAwBJAAQruAALELgAA9C4AAMvuAALELgABtC4AAYvuAALELgAINC4ACAv + MDETNDYzMhYzMj4CNz4DNTQ+AjMyHgIVFA4CHQE+AzMyFhUUDgIHDgMHDgMVFAYjIi4CNTQ+ + AjcOAyMiLgIBMhYVFA4EIyI1ND4CNz4DNTQmIyIOAiMiNTQ+AgIQGRlFKwgiLTMaAQEBAQgN + EQkJGRUPAwQDRE0rFg0xNw4XHg8JLEFSLwMGBgQpJwoNCAQHCAgCFzMxLRI0PSEKAbktNx0w + Ozs3EhkGER4ZGSkeEQ0OCQ0MDQoTDRkoAxAQDwgDAwQCLWVcSxMqX080FCIxHB1zhYEqCwYG + BAEtGQ0PCgUCAgYJCgZXuqJ4FjgvGSs8Iz5wdoRRAgYFAx4nJfzDRzYoT0c+LRkVBQ4UHBUV + MjY2GA4UBQYFFwkgHhcAAAAC//7/dwUOByUARQBvALi7AB8ABwAsAAQrQSEABgAfABYAHwAm + AB8ANgAfAEYAHwBWAB8AZgAfAHYAHwCGAB8AlgAfAKYAHwC2AB8AxgAfANYAHwDmAB8A9gAf + ABBdQQMABgAfAAFxQQUAFQAfACUAHwACcboAMQAsAB8REjm6AF4ALAAfERI5ALgAZS+4ACcv + uABJL7gAAC+4ABAvuwA8AAMANAAEK7oABgAnAGUREjm6ADEANAA8ERI5ugBeACcAZRESOTAx + ATIWFRQGBz4DNz4DMzIWFRQOBAcOAxUUHgIVFAYjIi4CNTQ+AjcOASMiLgI1NDYzMj4CNz4D + Nw4BIyImJy4DJy4BNTQ+AjMyHgIXPgM3NjMyFhUUBgcOAwKNHhgBASpXUUcaNlE6JwsXEEZu + iYd3JQUGAwIWGxYQGRg4MiEEBgoGZ7hHLUs4HyAdLnWHlU4HERESAgwmFBEcBg8rMDIWFREL + EhYLCzVAQRgZP0dMJhYQDg0PEQ88R0oFBjQrCRMKChUUEgcOGBILDRETNTs7MSMFPYqCbR9z + x5plERsqUKDtnjBvdnk6Gh0ZIiYMGBULExsQNj8hClYUFBAQKUg6LQ8OHQ0MFA8IJ0VhOi9f + XVgoFx0VFjMTEUJVYgD//wAC/6QDwAYZACYAVQAAAAcAbgIIAAAAAf/+/3cFDgVgAGcAwrsA + UQAHAF4ABCu4AF4QuAAK0LgACi9BIQAGAFEAFgBRACYAUQA2AFEARgBRAFYAUQBmAFEAdgBR + AIYAUQCWAFEApgBRALYAUQDGAFEA1gBRAOYAUQD2AFEAEF1BAwAGAFEAAXFBBQAVAFEAJQBR + AAJxugANAF4AURESObgAURC4AEPQALgAIi+4AFkvuwAYAAMAEAAEK7sABQABAGEABCu6AA0A + EAAYERI5ugAqAFkAIhESObgAYRC4AF7QuABeLzAxEzIeAjMyPgI3PgE3DgEjIi4CNTQ2MzI+ + Ajc+AzMyHgIVFAYHPgM3PgMzMhYVFA4EBw4DBz4DMzIWFRQGBw4BBx4DFRQGIyIuAicOASMi + NTQ+AuEFCRMlIgowPEAbAg0KZ7hHLUs4HyAdLnWHlU4HEhMTCg8TCwUBASpXUUcaNlE6JwsX + EEZuiYd3JQMGBAIBLEg/OB0RCx4uGm9PAxYaFBAZFzYwIwMxbDl0AgQHAkQHBwcEBggDV8Fe + Gh0ZIiYMGBULExsQNlxCJh4wOxwQHQ0KFRQSBw4YEgsNERM1OzsxIwUvZ2dgKAcMCQUQCxMq + EAkgD2u2jV0QGypKk9ySBgdBCRoZEgAAAAEAAv+kAw4FiwBvASC7AFsABABjAAQruABjELgA + CtC4AAovQSEABgBbABYAWwAmAFsANgBbAEYAWwBWAFsAZgBbAHYAWwCGAFsAlgBbAKYAWwC2 + AFsAxgBbANYAWwDmAFsA9gBbABBdQQMABgBbAAFxQQUAFQBbACUAWwACcbgAWxC5ACcABfS4 + AA3QuAANL7gAJxC4ACLQuAAiL7gAJxC5ADEABPS4ADbQuAA2L7gAMRC4AEfQuABHL7gAWxC4 + AEjQuABIL7gAWxC4AFbQuABWL7gAYxC4AGbQuABmLwC4ACwvuABeL7sABQABAGkABCu7ACIA + AwASAAQruAAiELgAGtC4ABovuAAiELgAHdC4AB0vuAAiELgAN9C4ADcvuABpELgAZtC4AGYv + MDETMh4CMzI+Ajc+ATcOAyMiLgI1NDYzMhYzMj4CNz4DNTQ+AjMyHgIVFA4CHQE+AzMyFhUU + BgcOAwcDPgMzMhYVFAYHDgEHDgMVFAYjIi4CNTQ2Nw4BIyI1ND4CHwUJEyUiCis2PBsFCAIX + MzEtEjQ9IQoQGRlFKwgiLTMaAQEBAQgNEQkJGRUPAwQDRE0rFg0xNyQuCSxBUi8JM1JGPh8R + Cx4uHYJeAgMDASomCQ0IAwICLWAzdAIEBwGaBwcHAwYHA0GGTwIGBQMeJyUIEA8IAwMEAi1l + XEsTKl9PNBQiMRwdc4WBKgsGBgQBLRkXDwcCBgkKBv7tBw4LBhALEyoQCiUQNF1LNQs3Lx82 + SCovVCcFBUEJGhkSAAD//wDO/7wEzwbFAiYANgAAAAcAdABaATv//wCE/90D/QWKAiYAVgAA + AAYAdBAAAAD//wDZ/7wEzwZaAiYANgAAAAcAigDBAVb//wDD/90DtgUEAiYAVgAAAAYAiisA + AAD//wDZ/7wEzwcRAiYANgAAAAcA3wCoATn//wCf/90DxAXYAiYAVgAAAAYA3xIAAAD//wDZ + /7wEzwbrAiYANgAAAAcA4QB5ATn//wDN/90DsgWyAiYAVgAAAAYA4eYAAAD//wDZ/7wEzwdv + AiYANgAAAAcA4wCFATn//wDN/90DsgY2AiYAVgAAAAYA4/MAAAAAAQDZ/k4E/QWBAHcB8rsA + DAAGAGoABCu7AEMABABdAAQruwAvAAcAJwAEK0EhAAYADAAWAAwAJgAMADYADABGAAwAVgAM + AGYADAB2AAwAhgAMAJYADACmAAwAtgAMAMYADADWAAwA5gAMAPYADAAQXUEDAAYADAABcUEF + ABUADAAlAAwAAnG6AHMAagAMERI5uABzL7kAAwAE9EEFABoAJwAqACcAAnFBIQAJACcAGQAn + ACkAJwA5ACcASQAnAFkAJwBpACcAeQAnAIkAJwCZACcAqQAnALkAJwDJACcA2QAnAOkAJwD5 + ACcAEF1BAwAJACcAAXG6AB0AJwAvERI5uAAdL0EFABoAHQAqAB0AAnFBIQAJAB0AGQAdACkA + HQA5AB0ASQAdAFkAHQBpAB0AeQAdAIkAHQCZAB0AqQAdALkAHQDJAB0A2QAdAOkAHQD5AB0A + EF1BAwAJAB0AAXG5ADkABvRBIQAGAEMAFgBDACYAQwA2AEMARgBDAFYAQwBmAEMAdgBDAIYA + QwCWAEMApgBDALYAQwDGAEMA1gBDAOYAQwD2AEMAEF1BAwAGAEMAAXFBBQAVAEMAJQBDAAJx + ugBiAGoAORESObgAedwAuAAARVi4ACovG7kAKgAOPlm7AEYAAgBYAAQruwARAAMAZQAEK7oA + YgBlABEREjkwMQEyFhUUDgYVFB4CMzI+BDc+AzU0LgQnLgE1NDYzMh4CFRQGBx4FFRQOAgcO + AxUUFjMyPgI3NjMyFhUUBgcOAyMiLgI1ND4CNw4BIyIuAjU0PgY1PgMBUCIkBwsPDw4LBxEr + SDYtZWZkVkUVICMQAwsSFhUTBQgMFh8WIRYLAwUFEhUVEAscMkUqI1RIMBodLGRmYSoKCAgI + CQskXmpvNiM9LxseMj8hZtRbUF8yDwYJDA0MCQcBAwsTBQ5LWw1Nb4mPj3xgGiU1IxALExgb + GgwSMT1FJh1gdX95aCMyaC0wPjNPXioaLhAdZ4OYm5dAJ0Q5MRMbUlxeJhIdGzJFKgoPCwwb + Di1NOSANHCodJ1BNSB8YFTBUc0MZY4OYmpR5VQ8eLB0PAAAAAAEAzf5OA9YD/gBvAgO7AAoA + BQBrAAQruwA9AAQAVwAEK7sALwAFACAABCtBIQAGAAoAFgAKACYACgA2AAoARgAKAFYACgBm + AAoAdgAKAIYACgCWAAoApgAKALYACgDGAAoA1gAKAOYACgD2AAoAEF1BAwAGAAoAAXFBBQAV + AAoAJQAKAAJxQQUAGgAgACoAIAACcUEhAAkAIAAZACAAKQAgADkAIABJACAAWQAgAGkAIAB5 + ACAAiQAgAJkAIACpACAAuQAgAMkAIADZACAA6QAgAPkAIAAQXUEDAAkAIAABcbgAIBC4ABvQ + uAAbL7gALxC4ACjQuAAoL0EhAAYAPQAWAD0AJgA9ADYAPQBGAD0AVgA9AGYAPQB2AD0AhgA9 + AJYAPQCmAD0AtgA9AMYAPQDWAD0A5gA9APYAPQAQXUEDAAYAPQABcUEFABUAPQAlAD0AAnG4 + AGsQuABk0LgAZC+6AFwAZAAoERI5uAAvELgAcdwAuAAARVi4ACMvG7kAIwAMPlm4AABFWLgA + Xy8buQBfAAg+WbsAQAACAFIABCu4AF8QuQAPAAP0QSEABwAPABcADwAnAA8ANwAPAEcADwBX + AA8AZwAPAHcADwCHAA8AlwAPAKcADwC3AA8AxwAPANcADwDnAA8A9wAPABBdQQMABwAPAAFx + QQUAFgAPACYADwACcboAXABfAA8REjkwMRMyFhUUDgQVFB4CMzI+BDc+AzU0LgI1NDYzMh4C + FRQGFAYUBhUUDgIHBgcOBRUUFjMyPgI3NjMyFhUUBgcOAyMiLgI1ND4CNw4BIyIuAjU8ATY0 + NjQ1ND4C/B0tAwYFBgMOGycZHU5TVEg4DQcJBQICAgIiFwwSDAcBAgEbLz8lAgQXODg1KRka + HSxkZmEqCggICAkLJF5qbzYjPS8bIzdGJEV6JDM+IAoBAQMKEQOcQD8VT2NtZ1gcKTUeCwcO + FRohFAozSFgwNm1gTBVOPxUgJxMMUnSLjYQxHzYuKBACAhEwO0FCPhsSHRsyRSoKDwsMGw4t + TTkgDRwqHSpWUkwgEA8lOkQgFVVrdm5bGSVLOiUA//8AOv+WB6gHHgImADgAAAAHAGcBiQE5 + //8AHP/JBboF5QImAFgAAAAHAGcAkQAA//8AHf7wBUwHHgImADoAAAAHAGcAWgE5////lP3L + A8gF5QImAFoAAAAGAGebAAAA//8ACv9iBo4HVQImADsAAAAHAI8BBAE5//8AG//dBFQGHAIm + AFsAAAAGAI/tAAAA//8ACv9iBo4G2QImADsAAAAHAOABPQE5//8AG//dBFQFoAImAFsAAAAG + AOAlAAAAAAEAF/+8A0YGeQBGAT24AEcvuABIL7gARxC4AADQuAAAL7gASBC4AAzcuQAZAAb0 + QQUAGgAZACoAGQACcUEhAAkAGQAZABkAKQAZADkAGQBJABkAWQAZAGkAGQB5ABkAiQAZAJkA + GQCpABkAuQAZAMkAGQDZABkA6QAZAPkAGQAQXUEDAAkAGQABcbgAABC5ACMABPRBIQAGACMA + FgAjACYAIwA2ACMARgAjAFYAIwBmACMAdgAjAIYAIwCWACMApgAjALYAIwDGACMA1gAjAOYA + IwD2ACMAEF1BAwAGACMAAXFBBQAVACMAJQAjAAJxuAAo0LgAKC+4AAAQuAAy0LgAMi+4AAAQ + uAA10LgANS8AuAAtL7sABwACABwABCu7AEYAAwA5AAQruAAHELgAEdy4ADkQuAA20LgANi+4 + AEYQuABB0LgAQS8wMQE+BTMyHgIVFA4CIyImNTQ3PgE1NCYjIg4DAhUUHgIVFA4CIyIuAjU0 + Nj0BDgEjIi4CNTQ2Nz4DNwFGBiQ0QUpNJiI7LRoKFyQaEBgECAsPEx88Ni4hEwQEBAIPIB0U + GAwEASA5GDVILBMkHw8hNEw6A0Sd9bZ9TiIhMDgXGEQ/LBUTCwsXQR4gLBxKgMf+6btpu5t3 + JA0qKR1RirloN3E6IAICCRIcEx8eAgECAgICAP//ACP/pggcB3wCJgChAAAABwCPAlIBYP// + AAz/xQc5BmQCJgDBAAAABwCPAqAASP//ADn+4QUfB1UCJgCzAAAABwCPAFIBOf//ADX+yQR7 + BhwCJgDTAAAABgCP/wAAAP//AE7+DAWRBUYCJgA0AAAABwD2AQgAAP//AEj+DAQMA/ACJgBU + AAAABgD2OQAAAAAC//791QUOBWAARwBsAV64AG0vuABuL7gAbRC4AC7QuAAuL7kAIQAH9EEh + AAYAIQAWACEAJgAhADYAIQBGACEAVgAhAGYAIQB2ACEAhgAhAJYAIQCmACEAtgAhAMYAIQDW + ACEA5gAhAPYAIQAQXUEDAAYAIQABcUEFABUAIQAlACEAAnG4AADQuAAAL7gAbhC4AEvcuQBe + AAX0QQUAGgBeACoAXgACcUEhAAkAXgAZAF4AKQBeADkAXgBJAF4AWQBeAGkAXgB5AF4AiQBe + AJkAXgCpAF4AuQBeAMkAXgDZAF4A6QBeAPkAXgAQXUEDAAkAXgABcboACABLAF4REjm4ABzQ + uAAcL7gAIRC4ACnQuAApL7oAMwAuACEREjm4ACEQuABI0LgASC8AuAAAL7gAUi+4AABFWLgA + KS8buQApAAg+WbsASAABAGYABCu7AD4AAwA2AAQrugAIAFIAABESOboAMwA2AD4REjkwMQEy + HgIVFAYHPgM3PgMzMhYVFA4EBw4DFRQeAhUUBiMiLgI1ND4CNw4BIyIuAjU0NjMyPgI3PgMT + MhYVFA4EIyI1ND4CNz4DNTQmIyIOAiMiNTQ+AgKRDxMLBQEBKldRRxo2UTonCxcQRm6Jh3cl + BQYDAhATEBAZGDMpGwQGCgZnuEctSzgfIB0udYeVTgcSExMhLTcdMDs7NxIZBhEeGRkpHhEN + DgkNDA0KEw0ZKAVgHjA7HBAdDQoVFBIHDhgSCw0REzU7OzEjBT2Kgm0fc6p3SBEcKjR80Z4w + b3Z5OhodGSImDBgVCxMbEDZcQib6NEc2KE9HPi0ZFQUOFBwVFTI2NhgOFAUGBRcJIB4XAAAC + AAL+DAMOBYsATQByARS7ADIABwA/AAQrQSEABgAyABYAMgAmADIANgAyAEYAMgBWADIAZgAy + AHYAMgCGADIAlgAyAKYAMgC2ADIAxgAyANYAMgDmADIA9gAyABBdQQMABgAyAAFxQQUAFQAy + ACUAMgACcbgAMhC5AEQABvS4AAvQuABEELgAENC4ABAvuAAyELgAGtC4ABovuAAyELgAH9C4 + AB8vuAAyELgAZNC4AGQvuAAg0LgAIC+4AGQQuAA30LgANy+4ADIQuQBRAAX0uABEELgAbtC4 + AG4vALgAFS+4AFgvuAA6L7sATgABAGwABCu7AAsAAwBJAAQruAALELgAA9C4AAMvuAALELgA + BtC4AAYvuAALELgAINC4ACAvMDETNDYzMhYzMj4CNz4DNTQ+AjMyHgIVFA4CHQE+AzMyFhUU + DgIHDgMHDgMVFAYjIi4CNTQ+AjcOAyMiLgIBMhYVFA4EIyI1ND4CNz4DNTQmIyIOAiMiNTQ+ + AgIQGRlFKwgiLTMaAQEBAQgNEQkJGRUPAwQDRE0rFg0xNw4XHg8JLEFSLwMGBgQpJwoNCAQH + CAgCFzMxLRI0PSEKAbktNx0wOzs3EhkGER4ZGSkeEQ0OCQ0MDQoTDRkoAxAQDwgDAwQCLWVc + SxMqX080FCIxHB1zhYEqCwYGBAEtGQwPCgYCAgYJCgZXuqJ4FjgvGSs8Iz5wdoRRAgYFAx4n + JfzDRzYoT0c+LRkVBQ4UHBUVMjY2GA4UBQYFFwkgHhcAAAABAGoBVANeAhcAIAAXALsADwAD + ABoABCu4ABoQuQAFAAH0MDETMh4CMzI+Ajc+AzMyFhUUBgcOAyMiNTQ+An0FCRMlIg1DT0oV + QGRSRiMRCx4uGGiTt2l1AgQIAeMGCAYGCAkDCRANCBALEysQCB4eFkIIGhkSAP//AKT/mAY7 + BtkCJgAjAAAABwDgARsBOf//AGz/qgTRBjsCJgBDAAAABgDgVgAAAP//AIf/sgWaBtkCJgAl + AAAABwDgAMsBOf//ADr/lgeoB00CJgA4AAAABwBBAcUBOf//ADr/lgeoB1UCJgA4AAAABwCP + AYkBOf//ADX/gQSzBkgCJgBFAAAABwDgAJEAAP//AB3+8AVMB00CJgA6AAAABwBBAJgBOf// + APb/UgUSBtkCJgAnAAAABwDgAFQBOf//ABf/vANGBwgCJgBHAAAABwDg/zwBaP//ANH/RgV7 + BtkCJgAuAAAABwDgAQoBOf//AKX/rAXTBaACJgBOAAAABwDgAS8AAP//AE7/WAUrBtkCJgAx + AAAABwDgAJMBOf//ABz/yQW6BhQCJgBYAAAABwBBAM0AAP//AMz9sgWPBaACJgBRAAAABwDg + ALwAAP//ABz/yQW6BhwCJgBYAAAABwCPAJEAAP//AE7/2wWRBtkCJgA0AAAABwDgANEBOf// + /5T9ywPIBhQCJgBaAAAABgBB1gAAAP//ADr/lgeoBswCJgA4AAAABwCDAcMBOf//ABz/yQW6 + BZMCJgBYAAAABwCDAMsAAP//AEj/0wQMBaACJgBUAAAABgDgCgAAAP////7/dwUOBtkCJgA1 + AAAABwDgADkBOf//AAL/pAMOBr8CJgBVAAAABwDg/2MBHwACAG0DbwJgBg4AIQBAAIy7AAUA + BQAVAAQrQSEABgAFABYABQAmAAUANgAFAEYABQBWAAUAZgAFAHYABQCGAAUAlgAFAKYABQC2 + AAUAxgAFANYABQDmAAUA9gAFABBdQQMABgAFAAFxQQUAFQAFACUABQACcbgABRC5ACcAB/S5 + ADcABfS4AAUQuAA+0LgAPi8AuAAiL7gACi8wMRMyHgIVFA4CIyImNTQ2Nz4DNTQuAiMiJjU0 + PgI3Mh4CFRQOAiMiJjU0Njc+AzU0LgQ1NDbdFTIrHi9FTR8OEh8OJC0YCQoWIxkLBQYOF74f + TEAsHS87Hw4UIA0SFw4GFiAnIBYMBbApTWtCL2VUNiINDBsOIjY0OCUWOjUlEwgEDxAMXjhb + cjpDaUkmDA0NGBAWJSgzJDBKOi0lIhIIEAAAAgDu/9sCBQV1ACAAOACSugADACwAAyu4AAMQ + uAAA0LgAAC+4AAMQuQAUAAf0uAADELkAGwAH9LgAAxC4ACTQuAAkL0EFANoALADqACwAAl1B + GwAJACwAGQAsACkALAA5ACwASQAsAFkALABpACwAeQAsAIkALACZACwAqQAsALkALADJACwA + DV0AuAAeL7gAAEVYuAApLxu5ACkACD5ZMDEBFhQVFA4EBw4DIyIuAjU0PgQ3PgEzMhYDMhYV + FA4CIyImNTQ+Ajc+Azc+AQIEAQMGCQwPCQgWGRoLCxALBgcLDQwJAgUWECU1SBYoKTpDGR0u + BQ0WEQ8PDhEPER8E/gwiFDSQn5+GYA8OHRgPECU9LjJ/iIh2WxdVZDz7vyYuIEY8JyogECUm + Iw8NBwIECwwVAAAAABMA6gABAAAAAAAAADYAAAABAAAAAAABABAANgABAAAAAAACAAcARgAB + AAAAAAADABwATQABAAAAAAAEABAANgABAAAAAAAFAAwAaQABAAAAAAAGAA8AdQABAAAAAAAQ + ABAANgABAAAAAAARAAcARgABAAAAAAASABAANgADAAEECQAAAGwAhAADAAEECQABACAA8AAD + AAEECQACAA4BEAADAAEECQADADgBHgADAAEECQAEACAA8AADAAEECQAFABgBVgADAAEECQAG + AB4BbgADAAEECQAQACAA8AADAAEECQARAA4BEKkgMjAwOSBNYXJrIFNpbW9uc29uIFN0dWRp + byBMTEMuICBBbGwgcmlnaHRzIHJlc2VydmVkLlNrZXRjaEZsb3cgUHJpbnRSZWd1bGFybWxz + czogU2tldGNoRmxvdyBQcmludDogMjAwOFZlcnNpb24gMS4wMVNrZXRjaEZsb3dQcmludACp + ACAAMgAwADAAOQAgAE0AYQByAGsAIABTAGkAbQBvAG4AcwBvAG4AIABTAHQAdQBkAGkAbwAg + AEwATABDAC4AIAAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBT + AGsAZQB0AGMAaABGAGwAbwB3ACAAUAByAGkAbgB0AFIAZQBnAHUAbABhAHIAbQBsAHMAcwA6 + ACAAUwBrAGUAdABjAGgARgBsAG8AdwAgAFAAcgBpAG4AdAA6ACAAMgAwADAAOABWAGUAcgBz + AGkAbwBuACAAMQAuADAAMQBTAGsAZQB0AGMAaABGAGwAbwB3AFAAcgBpAG4AdAAAAAIAAAAA + AAD/ZgBmAAAAAAAAAAAAAAAAAAAAAAAAAAABjgAAAQIAAgADAAYABwAIAAkACgALAAwADQAO + AA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAAp + ACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBE + AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBf + AGAAYQEDAMQApgDFAKsAggDCANgAxgDkAL4AsADmALYAtwC0ALUAhwCyALMA2QCMAOUAvwCx + AOcAuwEEAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQUAigEGAIMAkwDyAPMAjQCXAIgBBwDe + APEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQ + ANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2 + AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugDXAOIA4wDhANsA3ADdAOAA3wEI + AJ8AmwC8AJgAmgCZAO8ApQCSAJwApwCPAJQAlQC5AMAAwQEJAQoBCwEMAQ0BDgEPAP0A/gEQ + AREBEgETAP8BAAEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjAPgA+QEkASUBJgEn + ASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFC + AUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAD7 + APwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2 + AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGR + AZIBkwGUAZUBlgAFAAQFLm51bGwERXVybwd1bmkwMEEwB3VuaTAwQUQGbWFjcm9uDnBlcmlv + ZGNlbnRlcmVkBURlbHRhC2NvbW1hYWNjZW50B0FtYWNyb24HYW1hY3JvbgZBYnJldmUGYWJy + ZXZlB0FvZ29uZWsHYW9nb25lawtDY2lyY3VtZmxleAtjY2lyY3VtZmxleApDZG90YWNjZW50 + CmNkb3RhY2NlbnQGRGNhcm9uBmRjYXJvbgZEY3JvYXQGZGNyb2F0B0VtYWNyb24HZW1hY3Jv + bgZFYnJldmUGZWJyZXZlCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdFb2dvbmVrB2VvZ29uZWsG + RWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90YWNjZW50Cmdkb3Rh + Y2NlbnQMR2NvbW1hYWNjZW50DGdjb21tYWFjY2VudAtIY2lyY3VtZmxleAtoY2lyY3VtZmxl + eARIYmFyBGhiYXIGSXRpbGRlBml0aWxkZQdJbWFjcm9uB2ltYWNyb24GSWJyZXZlBmlicmV2 + ZQdJb2dvbmVrB2lvZ29uZWsKSWRvdGFjY2VudAJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3Vt + ZmxleAxLY29tbWFhY2NlbnQMa2NvbW1hYWNjZW50DGtncmVlbmxhbmRpYwZMYWN1dGUGbGFj + dXRlDExjb21tYWFjY2VudAxsY29tbWFhY2NlbnQGTGNhcm9uBmxjYXJvbgRMZG90BGxkb3QG + TmFjdXRlBm5hY3V0ZQxOY29tbWFhY2NlbnQMbmNvbW1hYWNjZW50Bk5jYXJvbgZuY2Fyb24L + bmFwb3N0cm9waGUDRW5nA2VuZwdPbWFjcm9uB29tYWNyb24GT2JyZXZlBm9icmV2ZQ1PaHVu + Z2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0ZQxSY29tbWFhY2NlbnQMcmNv + bW1hYWNjZW50BlJjYXJvbgZyY2Fyb24GU2FjdXRlBnNhY3V0ZQtTY2lyY3VtZmxleAtzY2ly + Y3VtZmxleAxUY29tbWFhY2NlbnQMdGNvbW1hYWNjZW50BlRjYXJvbgZ0Y2Fyb24EVGJhcgR0 + YmFyBlV0aWxkZQZ1dGlsZGUHVW1hY3Jvbgd1bWFjcm9uBlVicmV2ZQZ1YnJldmUFVXJpbmcF + dXJpbmcNVWh1bmdhcnVtbGF1dA11aHVuZ2FydW1sYXV0B1VvZ29uZWsHdW9nb25lawtXY2ly + Y3VtZmxleAt3Y2lyY3VtZmxleAtZY2lyY3VtZmxleAt5Y2lyY3VtZmxleAZaYWN1dGUGemFj + dXRlClpkb3RhY2NlbnQKemRvdGFjY2VudAVsb25ncwdBRWFjdXRlB2FlYWN1dGULT3NsYXNo + YWN1dGULb3NsYXNoYWN1dGUMU2NvbW1hYWNjZW50DHNjb21tYWFjY2VudAd1bmkwMjFBB3Vu + aTAyMUIJYWZpaTAwMjA4B3VuaTFFMDIHdW5pMUUwMwd1bmkxRTBBBldncmF2ZQZXYWN1dGUH + dW5pMUUwQgZZZ3JhdmUHdW5pMUUxRQd1bmkxRTFGB3VuaTFFNDAHdW5pMUU0MQd1bmkxRTU2 + BndncmF2ZQd1bmkxRTU3BndhY3V0ZQd1bmkxRTYwBnlncmF2ZQlXZGllcmVzaXMJd2RpZXJl + c2lzB3VuaTFFNjEHdW5pMUU2QQd1bmkxRTZCAAAAAAMACAACABAAAf//AAMAAAABAAEAAQAA + AAEAABuIAAAAFAAAAAAAABuAMIIbfAYJKoZIhvcNAQcCoIIbbTCCG2kCAQExCzAJBgUrDgMC + GgUAMGEGCisGAQQBgjcCAQSgUzBRMCwGCisGAQQBgjcCARyiHoAcADwAPAA8AE8AYgBzAG8A + bABlAHQAZQA+AD4APjAhMAkGBSsOAwIaBQAEFOs0nyJL0HdvP/6cYj6/kqVPXaKfoIIWRzCC + BBIwggL6oAMCAQICDwDBAIs8PIgR0T72Y+zfQDANBgkqhkiG9w0BAQQFADBwMSswKQYDVQQL + EyJDb3B5cmlnaHQgKGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4wHAYDVQQLExVNaWNyb3Nv + ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBSb290IEF1dGhvcml0eTAeFw05 + NzAxMTAwNzAwMDBaFw0yMDEyMzEwNzAwMDBaMHAxKzApBgNVBAsTIkNvcHlyaWdodCAoYykg + MTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEh + MB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOC + AQ8AMIIBCgKCAQEAqQK9wXDmO/JOGyifl3heMOqiqY0lX/j+lUyjt/6doiA+fFGim6KPYDJr + 0UJkee6sdslU2vLrnIYcj5+EZrPFa3piI9YdPN4PAZLolsS/LWaammgmmdA6LL8MtVgmwUbn + Cj44liypKDmo7EmDQuOED7uabFVhrIJ8oWAtd0zpmbRkO5pQHDEIJBSfqeeRKxjmPZhjFGBY + BWWfHTdSh/en75QCxhvTv1VFs4mAvzrsVJROrv2nem10Tq8YzJYJKCEAV5BgaTe7SxIHPFb/ + W/ukZgoIptKBVlfvtjteFoF3BNr2vq6Alf6wzX/WpxpyXDzKvPAIoyIwswaFybMgdxOF3wID + AQABo4GoMIGlMIGiBgNVHQEEgZowgZeAEFvQcO9pcp4jUX4Usk2O/8uhcjBwMSswKQYDVQQL + EyJDb3B5cmlnaHQgKGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4wHAYDVQQLExVNaWNyb3Nv + ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBSb290IEF1dGhvcml0eYIPAMEA + izw8iBHRPvZj7N9AMA0GCSqGSIb3DQEBBAUAA4IBAQCV6AvAjfOXGDXtuAEk2HcR81xgMp+e + C8s+BZGIj8k65iHy8FeTLLWgR8hi7/zXzDs7Wqk2VGn+JG0/ycyq3gV83TGNPZ8QcGq7/hJP + GGnA/NBD4xFaIE/qYnuvqhnIKzclLb5loRKKJQ9jo/dUHPkhydYV81KsbkMyB/2CF/jlZ2wN + Ufa98VLHvefEMPwgMQmIHZUpGk3VHQKl8YDgA7Rb9LHdyFfuZUnHUlS2tAMoEv+Q1vAIj364 + l8WrNyzkeuSod+N2oADQaj/B0jaK4EESqDVqG2rbNeHUHATkqEUEyFozOG5NHA1itwqijNPV + VD9GzRxVpnDbEjqHk3Wfp9KgMIIEYDCCA0ygAwIBAgIKLqsR3FD/XJ3LwDAJBgUrDgMCHQUA + MHAxKzApBgNVBAsTIkNvcHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAcBgNV + BAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0 + aG9yaXR5MB4XDTA3MDgyMjIyMzEwMloXDTEyMDgyNTA3MDAwMFoweTELMAkGA1UEBhMCVVMx + EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv + c29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0Ew + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3eX3WXbNFOag0rDHa+SU1SXfA+x+e + x0Vx79FG6NSMw2tMUmL0mQLDTdhJbC8kPmW/ziO3C0i3f3XdRb2qjw5QxSUr8qDnDSMf0UEk + +mKZzxlFpZNKH5nNsy8iw0otfG/ZFR47jDkQOd29KfRmOy0BMv/+J0imtWwBh5z7urJjf4L5 + XKCBhIWOsPK4lKPPOKZQhRcnh07dMPYAPfTG+T2BvobtbDmnLjT2tC6vCn1ikXhmnJhzDYav + 8sTzILlPEo1jyyzZMkUZ7rtKljtQUxjOZlF5qq2HyFY+n4JQiG4FsTXBeyS9UmY9mU7MK34z + boRHBtGe0EqGAm6GAKTAh99TAgMBAAGjgfowgfcwEwYDVR0lBAwwCgYIKwYBBQUHAwMwgaIG + A1UdAQSBmjCBl4AQW9Bw72lyniNRfhSyTY7/y6FyMHAxKzApBgNVBAsTIkNvcHlyaWdodCAo + YykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv + bjEhMB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5gg8AwQCLPDyIEdE+9mPs30Aw + DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUzB3OdgBwW6/x2sROmlFELqNEY/AwCwYDVR0P + BAQDAgGGMAkGBSsOAwIdBQADggEBAHurrn5KJvLOvE50olgndCp1s4b9q0yUeABN6crrGNxp + xQ6ifPMCQ8bKh8z4U8zCn71Wb/BjRKlEAO6WyJrVHLgLnxkNlNfaHq0pfe/tpnOsj945jj2Y + arw4bdKIryP93+nWaQmRiL3+4QC7NPP3fPkQEi4F6ymWk0JrKHG3OI/gBw3JXWjNvYBBa2ao + u7e7jjTK8gMQfHr10uBC33v+4eGs/vbf1Q2zcNaS40+2OKJ8LdQ92zQLYjcCn4FqI4n2XGOP + sFq7OddgjFWEGjP1O5igggyiX4uzLLehpcur2iC2vzAZhSAUDSq8UvRB4F4w45IoaYfBcOLz + p6vOgEJydg4wggR6MIIDYqADAgECAgphBieBAAAAAAAIMA0GCSqGSIb3DQEBBQUAMHkxCzAJ + BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD + VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp + Z25pbmcgUENBMB4XDTA4MTAyMjIxMjQ1NVoXDTEwMDEyMjIxMzQ1NVowgYMxCzAJBgNVBAYT + AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN + aWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxHjAcBgNVBAMTFU1pY3Jvc29m + dCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL1ytInnHJ+F + x3S4YFwDNj2c/Zl6milGIrCnh1Pt7kY6x1sFC1eot8oFzNNMd0dwhbPly99n56P9dCeTZ5/X + igNEMMb3ybrJOh0IVkRPFwgN+bQZaKokHPsFV4XpxU4HITen684sL7ZCzSEFp9bm0yhXxxt6 + zik2B82eVcy78SLrqCOkDSnC+9DDWj5jPccsSQt7eYXwiO9xvUNa46OzDfNV+yXg4iDT55pe + lKUzLSh/VxtVagwyRO9mbG/wOJzvAq2aod2YBxAOPBhp4nlORhTguYzQdW2crACcLUL1Ubha + 9HhFg+kufCu7Xc0ZYSitlEMKxWpC/7UyrqQpIt4W6NMCAwEAAaOB+DCB9TATBgNVHSUEDDAK + BggrBgEFBQcDAzAdBgNVHQ4EFgQUI9FzKky9++Uh+nEemRXRF/nEpoowDgYDVR0PAQH/BAQD + AgeAMB8GA1UdIwQYMBaAFMwdznYAcFuv8drETppRRC6jRGPwMEQGA1UdHwQ9MDswOaA3oDWG + M2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL0NTUENBLmNybDBI + BggrBgEFBQcBAQQ8MDowOAYIKwYBBQUHMAKGLGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w + a2kvY2VydHMvQ1NQQ0EuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQBDKc9jvWzjc23DmddtDIg7 + xkhzeiXOLOI3e500n70jzr7f2Fx5EWsTUSABY7ly9wjjxn1RKhYo1NHnmyrPGA3SE3GRKexW + vfnWxQ0vr2UtbU1FKVZyhE8/0modQWKpeVyO8Md3issCKC6dx5wr5bkqCd3sl+Lleo1eEIhT + od1gT3eYcWCoWzmR06sSHwXpw0Wp08JRua+43PwGhAD0dKPb/8wdoCMFB+QnNcKXkBmqgmAn + 6PuEKx7RBMuOz4IN16hNQ0B10t7dd++KXGsPh2SPtLq3uqtnVCFFqkpo51ReixRcZ3jskFwD + EJEInSQgl+jfABFwqfmycnC3ruLCnxYCMIIEnTCCA4WgAwIBAgIQaguZT8AAJasR20UfWHpn + ojANBgkqhkiG9w0BAQUFADBwMSswKQYDVQQLEyJDb3B5cmlnaHQgKGMpIDE5OTcgTWljcm9z + b2Z0IENvcnAuMR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1p + Y3Jvc29mdCBSb290IEF1dGhvcml0eTAeFw0wNjA5MTYwMTA0NDdaFw0xOTA5MTUwNzAwMDBa + MHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k + MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBU + aW1lc3RhbXBpbmcgUENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Ddu+6/I + QkpxGMjOSD5TwPqrFLosMrsST1LIg+0+M9lJMZIotpFk4B9QhLrCS9F/Bfjvdb6Lx6jVrmlw + ZngnZui2t++Fuc3uqv0SpAtZIikvz0DZVgQbdrVtZG1KVNvd8d6/n4PHgN9/TAI3lPXAnghW + HmhHzdnAdlwvfbYlBLRWW2ocY/+AfDzu1QQlTTl3dAddwlzYhjcsdckO6h45CXx2/p1sbnrg + 7D6Pl55xDl8qTxhiYDKe0oNOKyJcaEWL3i+EEFCy+bUajWzuJZsT+MsQ14UO9IJ2czbGlXqi + zGAG7AWwhjO3+JRbhEGEWIWUbrAfLEjMb5xD4GrofyaOawIDAQABo4IBKDCCASQwEwYDVR0l + BAwwCgYIKwYBBQUHAwgwgaIGA1UdAQSBmjCBl4AQW9Bw72lyniNRfhSyTY7/y6FyMHAxKzAp + BgNVBAsTIkNvcHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1p + Y3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5 + gg8AwQCLPDyIEdE+9mPs30AwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFG/oTj+XuTSr + S4aPvJzqrDtBQ8bQMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP + BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCUTRExwnxQuxGOoWEHAQ6McEWN + 73NUvT8JBS3/uFFThRztOZG3o1YL3oy2OxvR+6ynybexUSEbbwhpfmsDoiJG7Wy0bXwiuEbT + hPOND74HijbB637pcF1Fn5LSzM7djsDhvyrNfOzJrjLVh7nLY8Q20Rghv3beO5qzG3OeIYjY + tLQSVIz0nMJlSpooJpxgig87xxNleEi7z62DOk+wYljeMOnpOR3jifLaOYH5EyGMZIBjBgSW + 8poCQy97Roi6/wLZZflK3toDdJOzBW4MzJ3cKGF8SPEXnBEhOAIch6wGxZYyuOVAxlM9vamJ + 3uhmN430IpaczLB3VFE61nJEsiP2MIIEqjCCA5KgAwIBAgIKYQaULQAAAAAACTANBgkqhkiG + 9w0BAQUFADB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH + UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNy + b3NvZnQgVGltZXN0YW1waW5nIFBDQTAeFw0wODA3MjUxOTAyMTdaFw0xMzA3MjUxOTEyMTda + MIGzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u + ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYD + VQQLEx5uQ2lwaGVyIERTRSBFU046N0E4Mi02ODhBLTlGOTIxJTAjBgNVBAMTHE1pY3Jvc29m + dCBUaW1lLVN0YW1wIFNlcnZpY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV + gQogQhhRetmV7Zv93IfR+w6PE+qqNygSdv5NUKt2lyqTR+CpVmkC5ZR+TYXbf3HvdQDbu0Ns + +2+scfAr0XySzpQXnaHFuvn3ft1h4S0wHpwmLXY/5kaWjq7YiTfYzO/zz1vD/Gjg8mSPm+jD + EvmjvoT81ovOBT29AXZQJwP4hLcWho1gvl0pLDzPpf2YWjUdTxbAONgeYT89NrNWFBV3lTsQ + +gCwk+JdN6snu2MsSBSBVeNs6qkrlY2IDn6jAKV3JAeYKnADuCokkJrexaIiS79MWQZ3VHJD + sD5k3ZOECFi2/umHSQk2s7P4M6l+TKJ5fzJZKQ6etfXgPJ4/7EY7AgMBAAGjgfgwgfUwHQYD + VR0OBBYEFCiViL8CO+valLp9Rg/6y/R+nf/RMB8GA1UdIwQYMBaAFG/oTj+XuTSrS4aPvJzq + rDtBQ8bQMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kv + Y3JsL3Byb2R1Y3RzL3RzcGNhLmNybDBIBggrBgEFBQcBAQQ8MDowOAYIKwYBBQUHMAKGLGh0 + dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvdHNwY2EuY3J0MBMGA1UdJQQMMAoG + CCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEAAO6s/OLSiGbK + KeNauc0Agn4XXMUkWRK7qPdr14f+jcu1dh8bIvb34cq0uUEBGjetSDeWcPrMM6cojLgLtnQT + KLezdeEqCeKLT9+YP5e3NBKB6hDdHdy6ZM9OUDtMiv0Z3SWu1ZaH6kvE5fD5QRddAetXiH12 + euVv/ocgrJOcjJq/XxqgFTAk4KJ+YZEdKSnDSZA6Q4OJ7t7Vg91PLDU750FBAaoADAvy1kkb + zkKNe7DzLY1dKeG+jX+RFXa0YPsUJ6pvEmNCKFg6ijuLQOS3xcySVxxGVmuPy5JNVgUAyvgw + QEVO3xmIvfUQ8N0a3ygetFHyd+Am47sJgRLcHjrQRTGCBKcwggSjAgEBMIGHMHkxCzAJBgNV + BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK + ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25p + bmcgUENBAgphBieBAAAAAAAIMAkGBSsOAwIaBQCggdIwFAYJKwYBBAGCNygBMQcDBQADAAAA + MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3 + AgEVMCMGCSqGSIb3DQEJBDEWBBRA83YH9zWifCdN+xiYdc3c9pa+7TBcBgorBgEEAYI3AgEM + MU4wTKAigCAAUwBrAGUAdABjAGgARgBsAG8AdwAgAFAAcgBpAG4AdKEmgCRodHRwOi8vd3d3 + Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeSAwDQYJKoZIhvcNAQEBBQAEggEAXKvhnszsMG/f + lv6gyS7+PPFAjyp8kuEISw6CTGIAxChvojlIhPkjiyWvw3zgrV/JE5kVg/6ROx/xn8W0/faz + OA2B4yU8omPuX7CprhLDdwEJPLQikDaCpKXdLl11LZ9eRJJZh0rjC40QaF9Qr7Y4MnPmk3jz + D9lPIxaFGfcZqAypgpbyPlYSmMB9LnwUjIwvDczBr2jP99IoLRGs+USHu2vrEcnLcVwXZzLA + CHqHwVlfN4jMq4+wjo1mCBKGlNtsVl4t4+Gp12Mqp8AZZxbiUQRHw4zk3iyimjMlJen2EWiI + kV1f0ZMSWkU3FOw20453vNlaoHp/O9vO9GWPS63LTKGCAh8wggIbBgkqhkiG9w0BCQYxggIM + MIICCAIBATCBhzB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE + BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN + aWNyb3NvZnQgVGltZXN0YW1waW5nIFBDQQIKYQaULQAAAAAACTAHBgUrDgMCGqBdMBgGCSqG + SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA5MDQxNDIzMDczMlowIwYJ + KoZIhvcNAQkEMRYEFIB5PGyFhl+De9pBQ1C1u2EhaKGkMA0GCSqGSIb3DQEBBQUABIIBACYz + FgAdiULyBn6tvxNY/UgNt5hcFrnczU+Abm8Vm40K9mUuF22L05ztiXpL3Pdr9jW/0TtRU/Tp + 4Kp7+1e1jcAYbFLa5EApdU/Ule8fMFnvkxylOQMTSpq7nuZFDQhMsb6zNoXO8pnZVmG2Saqq + 4qMkYAbOteby9pW44qjGuEYnuN0wAcSiJ9eAlunOaAfao5jHSi9JCkVBB2z6KOhnl8PySC8X + gAeeFO6WmYHSHPNSgxVqLn6TbLtnNhc3+q3DYlYa7Dby+PQ+77uCyQBSp2NDncBucAzQ7F/j + s2XGNW0IPmq1ZvmCCuaFYRmdCx7NLxZSMlBxyayObMBFuYVjS7QAAQAAAAoAHgAsAAFsYXRu + AAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAMADAO6BtwAAQ3gAAQAAAA/ + AIgAngC0ALoAwADSANgA8gD4AQoBGAEyATwBQgFMAVIBYAF2AYwBogGoAcIByAHOAdQB2gH0 + AgICEAIWAhwCIgIoAi4CNAJOAlQCbgJ0Ao4ClAKaAqACpgKsArICwALGAuAC7gMIAxIDIAMu + A0gDTgNgA2YDbANyA4ADjgOUAAUAFf++ABj/fQAa/x0AN/99AFf/zwAFABX/vgAY/20AGv6q + ADf/XABX/30AAQBS/x0AAQA3/7AABAAb/54AHP+NADL/HQBS/roAAQA3/88ABgAb/48AHP+N + ADL/TgBS/x0AV/9/AFn/bwABADf/zwAEABv/jwAc/7AAMv9vAFL/HQADABv/oAAc/14AMv9e + AAYAG/9tABz/bQAy/04AUv6aAFf/bQBZ/ysAAgAb/7AAUv9cAAEAUv9vAAIAG//PAFL/rgAB + ABv/zwADABv/sAAc/88AUv9/AAUAFf++ABj/fQAa/x0AN/99AFf/zwAFABX/vgAY/30AGv8d + ADf/fQBX/88ABQAV/74AGP9tABr+qgA3/1wAV/99AAEAN//PAAYAG/9tABz/bQAy/04AUv6a + AFf/bQBZ/ysAAQA3/88AAQA3/88AAQA3/88AAQA3/88ABgAb/20AHP9tADL/TgBS/poAV/9t + AFn/KwADABv/sAAc/88AUv9/AAMAG/+wABz/zwBS/38AAQA3/7AAAQA3/7AAAQA3/7AAAQA3 + /88AAQA3/88AAQA3/88ABgAb/48AHP+NADL/TgBS/x0AV/9/AFn/bwABAFL/bwAGABv/jwAc + /40AMv9OAFL/HQBX/38AWf9vAAEAUv9vAAYAG/+PABz/jQAy/04AUv8dAFf/fwBZ/28AAQA3 + /88AAQA3/88AAQA3/88AAQA3/88AAQA3/88AAQA3/88AAwAb/6AAHP9eADL/XgABABv/zwAG + ABv/bQAc/20AMv9OAFL+mgBX/20AWf8rAAMAG/+wABz/zwBS/38ABgAb/48AHP+NADL/TgBS + /x0AV/9/AFn/bwACABv/sABS/1wAAwAb/6AAHP9eADL/XgADABv/oAAc/14AMv9eAAYAG/9t + ABz/bQAy/04AUv6aAFf/bQBZ/ysAAQBS/x0ABAAb/54AHP+NADL/HQBS/roAAQAb/88AAQAb + /88AAQA3/88AAwAb/7AAHP/PAFL/fwADABv/oAAc/14AMv9eAAEAG//PAAYAG/+PABz/jQAy + /04AUv8dAFf/fwBZ/28AAQq0AAQAAAAMACIAOABOAGQAegCQAKYAvADSAQADAgMMAAUADf8t + AA//bQBh/y0AY/8tAGT/bQAFAA3/oAAP/7AAYf+gAGP/oABk/7AABQAN/z0AD/9MAGH/PQBj + /z0AZP9MAAUADf78AA//DABh/vwAY/78AGT/DAAFAA3/sAAP/48AYf+wAGP/sABk/48ABQAN + /uwAD/7bAGH+7ABj/uwAZP7bAAUADf+NAA//wQBh/40AY/+NAGT/wQAFADr/zwB6/88AuP/P + AWb/zwF8/88ACwAN/48ADv+NAA//jwBh/48AY/+PAGT/jwBy/40Ac/+NAJL/jQDr/40Bdf+N + AIAADf8MAA7/PQAP/14AIv+NACT/bQAo/zsAK/+uADT/jQA2/64AQv89AET/XgBF/04ARv9O + AEj/XgBQ/14AU/+gAFT/bwBW/38AWv++AGH/DABj/wwAZP9eAGn/jQBy/z0Ac/89AHb/bwB4 + /14Akv89AJv/jQCc/40Anf+NAJ7/jQCf/40AoP+NAKH/jQCi/20AtP+uALX/rgC2/64At/+u + ALv/PQC8/z0Avf89AL7/PQC//z0AwP89AMH/PQDC/14Aw/9OAMT/TgDF/04Axv9OAM3/XgDO + /14Az/9eAND/XgDR/14A0/9eANT/fwDV/38A1v9/ANf/fwDY/74A2v++AOT/jQDr/z0A9/+N + APj/PQD5/40A+v89APv/jQD8/z0A/f9tAP7/XgD//20BAP9eAQH/bQEC/14BA/9tAQT/XgEG + /04BCP9OAQr/TgEM/04BDv9OARD/TgES/04BE/87ART/XgEV/zsBFv9eARf/OwEY/14BGf87 + ARr/XgEq/64BQf9eAUP/XgFF/14BR/+gAUn/oAFL/6ABTP+NAU3/bwFO/40BT/9vAVD/jQFR + /28BWP+uAVn/fwFa/64BW/9/AVz/rgFd/38BXv+uAV//fwFg/64BYf9/AWL/rgFj/38BZ/++ + AW3/jQFu/z0BcP9eAXX/PQF7/04Bhf+NAYb/vgACAEsAcQErAHEABQAN/64AD/++AGH/rgBj + /64AZP++AAIHrgAEAAAIzguWABwAIAAA/3//fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/oP+PAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6D/wQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/30AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD/O/9O/4//Xv+u/2//f//P/17/rv9t/54AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/74AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+w/7AAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8d/14AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD/wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + /4/+1wAAAAAAAAAAAAAAAP/PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP8M/tv/DP7L/uz+qv78/1z/Tv8t/x3/XgAA/67/vv+N/43/nv9e/0wAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/88AAP++AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/07/b/8t/x3/DP89/z3/Tv9O/z3/XP+e + AAD/sP+P/6D/Tv89/33/Lf9O/2//Lf+u/88AAAAAAAAAAAAA/8H/jwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP++AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/G/7N + AAAAAAAAAAAAAAAA/23/XP8d/20AAAAAAAAAAAAAAAAAAP9vAAAAAAAA/43/ngAAAAAAAAAA + AAAAAAAA/sv/DP66/qr+uv66/sv+y/78/y3/DP9eAAD/XP8b/wz+/P78/z3+7P9t/yv+7P89 + /2//bf++/48AAAAAAAAAAP8t/04AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sP/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8H/LQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/40AAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD/Xv9vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/z3/XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/f/8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/j/9tAAD/oAAAAAD/wwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6D/jQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9v + /17/rv+u/7j/j//BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8d/roAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/bQAAAAAAAAAAAAAAAAAA/43/fQAA + AAAAAAAA/30AAP+NAAD/Hf89AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/54AAAAAAAAAAAAA + AAAAAP++AAAAAAAAAAAAAP/PAAD/jQAA/2//TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQA/AA0ADwAnAC0AMQA0ADUANgA3 + ADgAOgBDAFUAVwBYAFoAYQBjAGQAaQB6ALQAtQC2ALcAuADYANoA3AEvATEBTAFOAVABUgFT + AVQBVQFWAVgBWgFcAV4BYAFiAWQBZQFmAWcBcwF3AXkBegF8AX0BgQGCAYQBhQGGAYcBiAGK + AAEADAARABQAFQAWABcAGAAZABsAMgA3AFIAVwABAI4ADQAOAA8AIgAjACQAJQAnACgAKQAt + ADAAMQA0ADUANgA4ADoAQwBEAEcAUABRAFMAVABVAFgAWgBhAGMAZABpAHIAcwB2AHoAkgCb + AJwAnQCeAJ8AoACiAKsArQCuAK8AsACxALMAtAC1ALYAtwC4AMIAzQDOAM8A0ADRANMA2ADZ + ANoA3ADkAOsA9wD5APsA/QD+AP8BAAEBAQIBAwEEAQUBBwETARUBFwEZARsBHQEvATEBQAFB + AUIBQwFEAUUBRwFJAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVgBWgFcAV4BYAFiAWQBZQFm + AWcBbAFvAXABcwF1AXYBdwF4AXkBegF8AX0BfgGBAYIBgwGEAYUBhgGHAYgBigACAHYADQAN + ABoADgAOABsADwAPABkAIwAjAAEAJAAkAAIAJQAlAAMAJwAnAAQAKAAoAAUAKQApAAYALQAt + AAcAMAAwAAgAMQAxAAkANAA0AAoANQA1AAsANgA2AAwAOAA4AA0AOgA6AA4AQwBDAA8ARABE + ABAARwBHABEAUABQABIAUQBRABMAUwBTABQAVABUABUAVQBVABYAWABYABcAWgBaABgAYQBh + ABoAYwBjABoAZABkABkAaQBpAAoAcgBzABsAdgB2ABUAegB6AA4AkgCSABsAogCiAAIAqwCr + AAMArQCxAAgAswCzAAgAtAC3AAwAuAC4AA4AwgDCABAAzQDRABIA0wDTABIA2ADYABgA2QDZ + ABMA2gDaABgA3ADcAAcA6wDrABsA/QD9AAIA/gD+ABAA/wD/AAIBAAEAABABAQEBAAIBAgEC + ABABAwEDAAIBBAEEABABBQEFAAMBBwEHAAMBEwETAAUBFQEVAAUBFwEXAAUBGQEZAAUBGwEb + AAYBHQEdAAYBLwEvAAcBMQExAAcBQAFAAAgBQQFBABIBQgFCAAgBQwFDABIBRAFEAAgBRQFF + ABIBRwFHABQBSQFJABQBSwFLABQBTAFMAAoBTQFNABUBTgFOAAoBTwFPABUBUAFQAAoBUQFR + ABUBUgFSAAsBUwFTABYBVAFUAAsBVQFVABYBVgFWAAsBWAFYAAwBWgFaAAwBXAFcAAwBXgFe + AAwBYAFgAAwBYgFiAAwBZAFkAA0BZQFlABcBZgFmAA4BZwFnABgBbAFsABEBbwFvAAgBcAFw + ABIBcwFzAAsBdQF1ABsBdgF2AAEBdwF3AA8BeAF4AAMBeQF6AA0BfAF8AA4BfQF9AAQBfgF+ + ABEBgQGBAAkBggGCABcBgwGDABMBhAGEABcBhQGFAAoBhgGGABgBhwGHAA0BiAGIABcBigGK + AAsAAQANAX4ABAAWAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAA + AAwAAAAAAAAADQAAAAAADgAAAAAAAAAAABUAAAAAAAAAGgABABsAAAAPAAAAAgAeAAAAAAAA + AAAAAAAAAAYAAAAHAAgACQAfAAoAAAAAAAAAAAAAABwAEAAFABEAAAASABMAHQAUAAAAFwAA + ABgAGQAAAAAAAAAAAAAABAAAAAQAAwAAAAAAAAAAABoAAAAVAB4AAAAAAAAAAAAAABYAFgAA + AAAAEwAAAAUAGQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAWAAAAAAAAAAAAAAAAAAAAAAALAAsACwALAAsACwALAAwAAAAAAAAAAAAAAAAAAAAA + AAAAAAAVABUAFQAVABUAAAAVABsAGwAbABsAAgAAAAAABgAGAAYABgAGAAYABgAHAAkACQAJ + AAkAAAAAAAAAAAAAABAABQAFAAUABQAFAAAABQAUABQAFAAUABgAAAAYAAAAAAAAAAAAAAAA + AAAAAAAAAAsAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAAAAAAAAAHwAfAAAACwAGAAsABgAL + AAYADAAHAAwABwAMAAcADAAHAAAACAAAAAgAAAAJAAAACQAAAAkAAAAJAAAACQANAAoADQAK + AA0ACgANAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAVAAUAFQAFABUABQAAABIAAAASAAAAEgAa + ABMAGgATABoAEwABAB0AAQAdAAEAAAAbABQAGwAUABsAFAAbABQAGwAUABsAFAAPABcAAgAY + AB4AGQAeABkAHwALAAYAFQAFAAAAAAABAAAAFgAAAAAAAAAPAA8ACAACAAAAHwAAABwAAAAX + ABEAFwAaABgADwAXAAAAAQABAAAACgAeACwAAWxhdG4ACAAEAAAAAP//AAEAAAABbGlnYQAI + AAAAAQAAAAEABAAEAAAAAQAIAAEAGgABAAgAAgAGAAwA9AACAEoA9QACAE0AAQABAEc= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sketchflow + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/footnote.fodt b/writerperfect/qa/unit/data/writer/epubexport/footnote.fodt new file mode 100644 index 000000000..a846d64ed --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/footnote.fodt @@ -0,0 +1,8 @@ + + + + + before1Footnote contentafter + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/fxl-2page.fodt b/writerperfect/qa/unit/data/writer/epubexport/fxl-2page.fodt new file mode 100644 index 000000000..40f628b5e --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/fxl-2page.fodt @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + First chapter + He heard quiet steps behind him. That didn't bode well. Who could be following him this late at night and in this deadbeat part of town? And at this particular moment, just after he pulled off the big time and was making off with the greenbacks. Was there another crook who'd had the same idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the steps behind him mean that one of many law officers in town was on to him and just waiting to pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the alley. Like lightning he darted off to the left and disappeared between the two warehouses almost falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the way he had come. The steps got louder and louder, he saw the black outline of a figure coming around the corner. Is this the end of the line? + Second chapter + This is the end. + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/hello.fodt b/writerperfect/qa/unit/data/writer/epubexport/hello.fodt new file mode 100644 index 000000000..b245e9d7a --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/hello.fodt @@ -0,0 +1,8 @@ + + + + + Hello world! + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/image-border.fodt b/writerperfect/qa/unit/data/writer/epubexport/image-border.fodt new file mode 100644 index 000000000..cffe4d606 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/image-border.fodt @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + beforeiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + after + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/image-link.fodt b/writerperfect/qa/unit/data/writer/epubexport/image-link.fodt new file mode 100644 index 000000000..0796cea3e --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/image-link.fodt @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/image-nospan.fodt b/writerperfect/qa/unit/data/writer/epubexport/image-nospan.fodt new file mode 100644 index 000000000..332052a9e --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/image-nospan.fodt @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + beforeiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + after + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/image.fodt b/writerperfect/qa/unit/data/writer/epubexport/image.fodt new file mode 100644 index 000000000..52e6d2b97 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/image.fodt @@ -0,0 +1,28 @@ + + + + + + + + + + beforeiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + after + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/line-break.fodt b/writerperfect/qa/unit/data/writer/epubexport/line-break.fodt new file mode 100644 index 000000000..1a6fca72b --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/line-break.fodt @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ab + aabb + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/link-charformat.fodt b/writerperfect/qa/unit/data/writer/epubexport/link-charformat.fodt new file mode 100644 index 000000000..b158ce3db --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/link-charformat.fodt @@ -0,0 +1,13 @@ + + + + + + + + + + Before https://libreoffice.org/ after. + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/link-invalid.odt b/writerperfect/qa/unit/data/writer/epubexport/link-invalid.odt new file mode 100644 index 000000000..3bbbdeb92 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/link-invalid.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/link-namedcharformat.fodt b/writerperfect/qa/unit/data/writer/epubexport/link-namedcharformat.fodt new file mode 100644 index 000000000..0e05c8d74 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/link-namedcharformat.fodt @@ -0,0 +1,13 @@ + + + + + + + + + + A http://libreoffice.org b – red via character style + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/link.fodt b/writerperfect/qa/unit/data/writer/epubexport/link.fodt new file mode 100644 index 000000000..9a2efcc0b --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/link.fodt @@ -0,0 +1,8 @@ + + + + + Before https://libreoffice.org/ after. + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/list.fodt b/writerperfect/qa/unit/data/writer/epubexport/list.fodt new file mode 100644 index 000000000..9c02b9d09 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/list.fodt @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + A + + + B + + + C + D + + + E + + + F + + + + + G + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/meta-xmp.fodt b/writerperfect/qa/unit/data/writer/epubexport/meta-xmp.fodt new file mode 100644 index 000000000..9287ecb25 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/meta-xmp.fodt @@ -0,0 +1,14 @@ + + + + unknown author from doc + unknown title from doc + de + 2014-09-27T09:51:19.243117081 + + + + Hello world! + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/meta-xmp/metadata.xmp b/writerperfect/qa/unit/data/writer/epubexport/meta-xmp/metadata.xmp new file mode 100644 index 000000000..aa578159c --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/meta-xmp/metadata.xmp @@ -0,0 +1,28 @@ + + + + + deadbeef-e394-4cd6-9b83-7172794612e5 + + + unknown title from xmp + + + + + unknown author from xmp + + + + + nl + + + + + 2016-11-20T17:16:07Z + + + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/meta.fodt b/writerperfect/qa/unit/data/writer/epubexport/meta.fodt new file mode 100644 index 000000000..8b1af3e44 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/meta.fodt @@ -0,0 +1,14 @@ + + + + A U Thor + Title + hu + 2017-09-27T09:51:19.243117081 + + + + Hello world! + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/meta/cover.png b/writerperfect/qa/unit/data/writer/epubexport/meta/cover.png new file mode 100644 index 000000000..fdad35484 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/meta/cover.png differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/named-style-inheritance.fodt b/writerperfect/qa/unit/data/writer/epubexport/named-style-inheritance.fodt new file mode 100644 index 000000000..2bd619777 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/named-style-inheritance.fodt @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Heading 1 + Text Bodyblue + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/nested-span.fodt b/writerperfect/qa/unit/data/writer/epubexport/nested-span.fodt new file mode 100644 index 000000000..a593ff348 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/nested-span.fodt @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + beforered + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/outline-level.fodt b/writerperfect/qa/unit/data/writer/epubexport/outline-level.fodt new file mode 100644 index 000000000..11cbf3dc2 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/outline-level.fodt @@ -0,0 +1,15 @@ + + + + + Chapter 1 + foo + Chapter 1.1 + foo + Chapter 2 + bar + Chapter 2.1 + bar + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/para-autostyle-char-props.fodt b/writerperfect/qa/unit/data/writer/epubexport/para-autostyle-char-props.fodt new file mode 100644 index 000000000..ceb556940 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/para-autostyle-char-props.fodt @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + This is serif. + This is sans. + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/para-char-props.fodt b/writerperfect/qa/unit/data/writer/epubexport/para-char-props.fodt new file mode 100644 index 000000000..67fe02db2 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/para-char-props.fodt @@ -0,0 +1,16 @@ + + + + + + + + + + + + + abc + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/para-namedstyle.fodt b/writerperfect/qa/unit/data/writer/epubexport/para-namedstyle.fodt new file mode 100644 index 000000000..887a5c1b2 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/para-namedstyle.fodt @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + Heading + Text Body + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/popup-api.odt b/writerperfect/qa/unit/data/writer/epubexport/popup-api.odt new file mode 100644 index 000000000..30f4cc8f5 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/popup-api.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/popup-media.odt b/writerperfect/qa/unit/data/writer/epubexport/popup-media.odt new file mode 100644 index 000000000..5f45e7ce8 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/popup-media.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/popup-media/libreoffice.png b/writerperfect/qa/unit/data/writer/epubexport/popup-media/libreoffice.png new file mode 100644 index 000000000..cc74f136f Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/popup-media/libreoffice.png differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/popup.odt b/writerperfect/qa/unit/data/writer/epubexport/popup.odt new file mode 100644 index 000000000..30f4cc8f5 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/popup.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/popup/libreoffice.png b/writerperfect/qa/unit/data/writer/epubexport/popup/libreoffice.png new file mode 100644 index 000000000..cc74f136f Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/popup/libreoffice.png differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/section.fodt b/writerperfect/qa/unit/data/writer/epubexport/section.fodt new file mode 100644 index 000000000..84fb6d2ae --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/section.fodt @@ -0,0 +1,12 @@ + + + + + Before. + + In section. + + After. + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/simple-ruby.odt b/writerperfect/qa/unit/data/writer/epubexport/simple-ruby.odt new file mode 100644 index 000000000..160dd00ee Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/simple-ruby.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/span-autostyle.fodt b/writerperfect/qa/unit/data/writer/epubexport/span-autostyle.fodt new file mode 100644 index 000000000..3122bef8d --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/span-autostyle.fodt @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + Hello world! + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/table-cell-border.fodt b/writerperfect/qa/unit/data/writer/epubexport/table-cell-border.fodt new file mode 100644 index 000000000..28beff5ef --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/table-cell-border.fodt @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Before + + + + + A1 + + + B1 + + + + + A2 + + + B2 + + + + After + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/table-cell-width.fodt b/writerperfect/qa/unit/data/writer/epubexport/table-cell-width.fodt new file mode 100644 index 000000000..345550928 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/table-cell-width.fodt @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Before + + + + + + + A1, this is wider + + + B1, than this + + + C1, or this + + + + After + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/table-row-height.fodt b/writerperfect/qa/unit/data/writer/epubexport/table-row-height.fodt new file mode 100644 index 000000000..28b06a429 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/table-row-height.fodt @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Before + + + + + This row has a larger height + + + + + Than this one. + + + + After + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/table-row-span.fodt b/writerperfect/qa/unit/data/writer/epubexport/table-row-span.fodt new file mode 100644 index 000000000..dd007dcc1 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/table-row-span.fodt @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Row spanning + + + B1 + + + + + + B2 + + + + + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/table-width.fodt b/writerperfect/qa/unit/data/writer/epubexport/table-width.fodt new file mode 100644 index 000000000..17793628d --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/table-width.fodt @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + Before + + + + + In table + + + + After + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/table.fodt b/writerperfect/qa/unit/data/writer/epubexport/table.fodt new file mode 100644 index 000000000..9135c902f --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/table.fodt @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + Before + + + + + A1 + + + B1 + + + + + A2 + + + B2 + + + + After + + + diff --git a/writerperfect/qa/unit/data/writer/epubexport/tdf115623-many-pagespans.odt b/writerperfect/qa/unit/data/writer/epubexport/tdf115623-many-pagespans.odt new file mode 100644 index 000000000..3e7c291aa Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/tdf115623-many-pagespans.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/tdf115623-single-writing-mode.odt b/writerperfect/qa/unit/data/writer/epubexport/tdf115623-single-writing-mode.odt new file mode 100644 index 000000000..4c374a1bd Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/tdf115623-single-writing-mode.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/tdf115623-split-by-chapter.odt b/writerperfect/qa/unit/data/writer/epubexport/tdf115623-split-by-chapter.odt new file mode 100644 index 000000000..ee6d48296 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/epubexport/tdf115623-split-by-chapter.odt differ diff --git a/writerperfect/qa/unit/data/writer/epubexport/text-box.fodt b/writerperfect/qa/unit/data/writer/epubexport/text-box.fodt new file mode 100644 index 000000000..d3a178682 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/epubexport/text-box.fodt @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAAAFz + UkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + AAJiS0dEAACqjSMyAAAACW9GRnMAAAAGAAAAAAAMc1XTAAAACXBIWXMAAA3XAAAN1wFCKJt4 + AAAACXZwQWcAAABMAAAAQACdMTgbAAABzUlEQVRo3u3ZPU/CQBjA8X+Jxs3ESUDj4iK+LA5+ + BBfjqBE1cXB2MlFAEqMgxvhNNL4sLsK3UPQL6ObkoAETz+FKW2mxCPRYnucWUu76/OC59C49 + cGOCKqrD9kHRc6ddPv7oW2WCwMh0nF63Myz7Tm8hPTNu0pgHMER3scepTbgK6enJNND83RLn + /878yRaPmgBZFDuMsNLeWB9gmFQHP77MIg9gsYciR50NFKvtjIy10yk84pSZA7DYpwR8scmF + QQCMuoQMpzbh0iAARrlnVn90CWHTsZcAiHPPdINQAuqsc2MQAAnKDUKWEhZ10twaBEDSJWQo + YlFj7S9CzwEegkXWIbQsRAQASFJhpplwbRAACS+hANRJBxMiAkDcJeQ4sQkBhYgMoJ+Ozlwo + 2YQ7AJ6CRxyiUGnVy3hVKb0Af9v7hUG2Wy9TEQCUelFTDULB2S+YKYGOMcpM6UIccOQnRA6A + cSp6ibfI+wkGADBGpTEd8xz1AaAfTQ7huA8AvUw5hVjuA0D/C5OaMN8XACRZ8F0zCggKAQhA + AAIQgAAEIAABCEAAAhCAAAQgAAH4zg3feY4w3Xs44M5+oW0qvCWoGcvaIlM3x/f/ab+O738A + hOCNQr34oD4AAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAtMTItMjBUMTc6MDg6MzYrMDE6MDB6 + 5RscAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDEwLTEyLTIwVDE3OjA4OjM3KzAxOjAwgyNmnAAA + AABJRU5ErkJggg== + Illustration 1: foobar + + + diff --git a/writerperfect/qa/unit/data/writer/libabw/fail/.gitignore b/writerperfect/qa/unit/data/writer/libabw/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libabw/indeterminate/.gitignore b/writerperfect/qa/unit/data/writer/libabw/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libabw/pass/hello.abw b/writerperfect/qa/unit/data/writer/libabw/pass/hello.abw new file mode 100644 index 000000000..8103ce823 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libabw/pass/hello.abw @@ -0,0 +1,32 @@ + + + + + + + + + + + +Sat Mar 29 15:05:47 2014 + +AbiWord +David Tardon +Sat Mar 29 15:05:47 2014 + +application/x-abiword + + + + + + + + + + +
+

hello world

+
+
diff --git a/writerperfect/qa/unit/data/writer/libabw/pass/hello.zabw b/writerperfect/qa/unit/data/writer/libabw/pass/hello.zabw new file mode 100644 index 000000000..c83395b86 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libabw/pass/hello.zabw differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/fail/TCR.tcr b/writerperfect/qa/unit/data/writer/libe-book/fail/TCR.tcr new file mode 100644 index 000000000..448021cc2 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/fail/TCR.tcr differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/indeterminate/.gitignore b/writerperfect/qa/unit/data/writer/libe-book/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/Broad_Band_eBook.lrf b/writerperfect/qa/unit/data/writer/libe-book/pass/Broad_Band_eBook.lrf new file mode 100644 index 000000000..5e5b69d65 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/Broad_Band_eBook.lrf differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2 b/writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2 new file mode 100644 index 000000000..4348cb75b --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2 @@ -0,0 +1,26 @@ + + + + + + David + Tardon + + Hello world + en + + + + David + Tardon + + 2013-11-17 + 1.0 + + + +
+

Hello world.

+
+ +
diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2.zip b/writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2.zip new file mode 100644 index 000000000..848240452 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/FictionBook2.fb2.zip differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/PalmDOC.pdb b/writerperfect/qa/unit/data/writer/libe-book/pass/PalmDOC.pdb new file mode 100644 index 000000000..e64f51488 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/PalmDOC.pdb differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/PeanutPress.pdb b/writerperfect/qa/unit/data/writer/libe-book/pass/PeanutPress.pdb new file mode 100644 index 000000000..ac69913ee Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/PeanutPress.pdb differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/Plucker.pdb b/writerperfect/qa/unit/data/writer/libe-book/pass/Plucker.pdb new file mode 100644 index 000000000..0ed82465e Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/Plucker.pdb differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/TealDoc.pdb b/writerperfect/qa/unit/data/writer/libe-book/pass/TealDoc.pdb new file mode 100644 index 000000000..577a967c2 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/TealDoc.pdb differ diff --git a/writerperfect/qa/unit/data/writer/libe-book/pass/zTXT.pdb b/writerperfect/qa/unit/data/writer/libe-book/pass/zTXT.pdb new file mode 100644 index 000000000..6461b4ff9 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libe-book/pass/zTXT.pdb differ diff --git a/writerperfect/qa/unit/data/writer/libetonyek/fail/.gitignore b/writerperfect/qa/unit/data/writer/libetonyek/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libetonyek/indeterminate/.gitignore b/writerperfect/qa/unit/data/writer/libetonyek/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_4.pages b/writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_4.pages new file mode 100644 index 000000000..43c921392 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_4.pages differ diff --git a/writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_5.pages b/writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_5.pages new file mode 100644 index 000000000..cd4438a34 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libetonyek/pass/Pages_5.pages differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/fail/.gitignore b/writerperfect/qa/unit/data/writer/libmwaw/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libmwaw/indeterminate/GreatWorks_v2.hqx b/writerperfect/qa/unit/data/writer/libmwaw/indeterminate/GreatWorks_v2.hqx new file mode 100644 index 000000000..f89b7631d --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/indeterminate/GreatWorks_v2.hqx @@ -0,0 +1,180 @@ +(This file must be converted with BinHex 4.0) +:$h4PFh4(FQ9KG&G[FQYc-J"D9e*8@N9#8J%!!!!D#!!!%,[PXJ)!@PG59!#3#J- +B!Q3&+!2m!%J!5!"M!!%!!!%!!!!"!!!"!*!R!3!)!!N!N!8"!!%!$!!!!3!!5!! +!!%J!!!")!!!!5!#3$`i!N"0)!!!!5!!!!Y!!!!)F!*#M5!!!!%J!!!")!!!#(!! +!!%J!!!")!!!#`3!!!K`!N*)#`J!!!%J!!!,3!!!#(!!!!%J!!!")!!!!5!!!!K` +!!!")!!!!5!!!!Xm!!!)F!*#5!Y!!!!")!!!#d!!!!K`!!!!#!!)!!!C)!!!!$`! +!"1!!"!!!!!J!!!!)!&B!N#X3!!%!&3!!#8KPE(CPG'PMB3#3"!%!!3!!!3!"!!% +!!3!"!!%!!!!)!!%!$J!+!*!&&3!!!!`!N!F"!*!2!3#3#JB&"3!!)2q3"#i!!#$ +rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!! +Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J! +!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!*!'#!#3"3J!N"%)!*! +&$J!!!X)!!!")!!!#d!!!!K`!N!KK)'C[Eh4PFJ#3"!%!!`!!%3!+!"F!!J!D!!) +!!!&X!!B!$J!+!*!&&3!!!!`!N!F"!!i!#J#3"48!!3!-!*!(!3!1!!S!"!!!!"8 +!!J!-!*!(!3!1!!S!N!89!!3!$!#3"`%!%!!,!*!&&3!)!!`!N!F"!"%!#`#3"48 +!%!!-!*!(!3!4!!S!N!89)!!!$!#3"`%!$J!+!*!&&3!J!!`!N!F"!!i!#J#3"48 +!3!!-!*!(!J!5!!i!N!89!3!!$!#3"`%!%J!+!*!&&3)!!!`!N!F"!!i!#J#3"48 +!!!!-rrm!N!8"!!i!#J#3"48!!!!--c2rrfCQ!!%!$J!+!*!&&3!!!!`!!-c-rrm +!!3!2!!X!N!89!!!!$J#3"`%!*!!F!*!&&3!!!#3!N!F"!!B!"3#3"48!!!!'!*! +("!#3$`%!N!S'"38!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J! +!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i +!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3 +Z!!!Jrj!%,J!!!3#3$`'!!*!*"J8&!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$ +rN!3Z!!!Jrj!%,J!!)2q3"#i!!!%!N!m#!*!+"J8&!!!Jrj!%,J!!)2q3"#i!!#$ +rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!! +Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J! +!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!!%!!3#3$3%!N!S'"38!!#$rN!3 +Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!!3!#!*!0!3# +3#JB&"3!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J! +!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i +!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3 +Z!!!"!!-!N!d"!*!+"J8&!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$ +rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!! +Jrj!%,J!!)2q3"#i!!!%!N!FL!*!(!3#3#JB&"3!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$ +rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!"!!!!*3#3#`%!N!S'"38!!#$rN!3 +Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!!3!!!!%!N!F +N!!!!!3#3#JB&"3!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!! +Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J! +!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i +!!#$rN!3Z!!!1!!!!!3#3#`%!N!S'"38!!#i!*!!!,J!"B3"*rRFZ!!)J!'X!!#i +!!b!!NJ!!,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!N!BZ!!%!!!!%!*!&!3!#!!!!"J#3"3) +!!`!!!!N!N!8"!!3!!!!)!*!&!3!&!!!!"`!'!!!!%3!(!!!!#3!)!!!!"`!*!!! +!"3!+!!!!"!!*!!!!!3!,!!!!"!!-!!!!"J!0!!!!"3!1!!!!#J!2!!!!#J!3!!! +!#3#3"F!!N!3"3`#3$"8,!!!!+Iq3"!#3$4d!N!81!*!(!3!1!!!!(!#3"h%!(!! +!!%3!N!FG!%3!!!"S!!!!!3!!!!i!D!!!!(X!!!!#!!!!$!"l!!!!N`!!!!-!!!! +(!*-!!!#K!!!!"!!!!!B!S3!!!+m!!!!&!!!!"3#[!!!![3!!!!B!!!!*!,d!!!$ +,!!!!"`!!!!S!b`!!!0N!!!!)!!!!#!$C!!!!j`!!!!N!!!!0!1F!!!$e!!!!#3! +!!!m!p3!!!3-!!!!*!!!!!3%$!!!"%3!!!!N!!!!A!4%!!!%I!!!!#3!!!!%"(`! +!!5d!!!!*!!!!%!%Y!!!"1`!!!!N!!!!"!6X!!!&*!!!!#3!!!!%"53!!!9F!!!! +*!!!!!3&A!!!"C3!!!!N!!!!"!@8!!!&c!!!!#3!!!#)"F`!!!B%!!!!*!!!!!3' +"!!!#H3!!!!N!!!!0!*!&$J!!!!N!N!81!!!!(!!!!%J!!!")!!!#`3!!!K`!N!8 +"!!!!5!!!!%J!!!,"!!!#(!#3"3)!'%%JFfPYF'aP)%GbC@&d9fpbDh-J-Li`)'C +TE'80$A4PFh3JEfBJCQpZG(-J1L"LEfaN)'PdB@aTBb!JG@jNCA*XD@jP)'peG'a +TEQ8J)(0SB@4[Gb"NEh9LE'8JG@jNCA*XD@jP)'0[EA"bCA0c)'9iF'&ZC#"cGA" +PFR0eBR-JFQ9N)'GbC@9Z)'*XG@80-63JF'pTER4c)$-f)("[D@jdFb!f)("[D@j +dF`da,M8JD@jdCA*XD@jP$6)JD@jdCA*XD@jP$@0PER4PFJebD@GSG!eQG@aX$@a +PCR3J-5ie$@CTFR0d)$%Z03ebD@GSG#!h$A0[E@8JG'&LF`N*#3ecEfeP)'aTEQ9 +c)#!k)!d0FfpYC5"[G'KPFL"RFQ&`D'PMFb!k)!d0FfpYC5"dCAKdBQpi)$SJ$C! +&B5"NBA4P)"8J+#"QEh*YBA3J5R9Z)$%f,#!b-$!a-b!T$3aK)("KCf8JBR*PB@X +0!*!%!aJ#C!#3"!-B!Q3&+!2m!%J!5!"M!!%!!!!"!!!!!3#3$2q3"J#3#[q3"J! +!!!(rN!J!!`#3#3%!5!!!!Y!!!!)F!*!l!3!"!!%!!!!,!!8!$MrpVk$9Hl3ei8G +!!ZhEDZFG)A@k!Di"!!!9!!!!$!#3#3%!!!B!!!%!%J!!!&S!!!!'!3#3"!N!!!! +"!*!&!3!!"ri!!!(U!!!$9J!!!"B!N!8*!$B#!!&!!!!!N3!!!8%!!!$1!!!!!3! +!!!%"33!!!*%!!!&!!!!!cJ#3%!)!!8%!!!$Q!!!"33!!!6F!!!!$!!!!!J&"!!! +!jJ!!!8%!!!%h!*!3!J!"3!!!!8`!!!&!!!!"V!!!!!3!!!!$!8!!!!&-!!!"3!! +!!D`!N"!$!!&5!!!!c3!!!@3!!!$X!!!!!3!!!!3!N"i%!!&6!!!!r`!!!@-!!!% +R!!!!!3!!!!8!!3!5!*!D#!!"8`!!!6d!!!&S!!!"M!!!!!%!!!!'!!!!3J#3'J` +!!8B!!!'J!!!"CJ!!!H,fJ!!"!!!!"`!!!+S!N"S"!!&l!!!!T3!!!BN!!!$V!!! +!"3!!!!J!!!!i!*!%!3#3&3%!!B%!!!%%!!!"R3!!!@)!!!!&!!!!#3!!!A3!N!3 +"!*!@"3#U!!8!!3!!!!%!!!%!N!F"!2q3"J%!N!F"!2q3"J%!!!(rN!J!!`#3#3% +!5!!!!Y!!!!)F!*!l!3!"!!%!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!Di +!!!!"!!!!!3!!!3#3"`%!rj!'!3#3"`%!rj!'!3!!!Iq3#!!$!*!*!`!#!!N!!!! +*!!$rr`!#kci!N!6J&rrr!!,Y`J#3"1!Brrm!!Zj0!*!&aIrr!!)!N"-"!!%!!3! +!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES"VJ!"!!%!!!!"!!!"!'CQc-`!!!% +!rj!'!3"QCXc-!!!"!2q3"J%!!!(rN!J!!Iq3#!!"!%J!!!,3!!!#(!#3+Y9m!'# +h9!!#J!!bEJ!EYeS!!3!"!!%!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!Di +!!3!"!!!!!3!!!3#3"`%!rj!'!3#3"`%!rj!'!3!!!Iq3#!!$!*!*!`!#!!N!!!! +*!!$rr`!#kci!N!6J&rrr!!,Y`J#3"1!Brrm!!Zj0!*!&aIrr!!)!N"-#!!%!!3! +!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES"VJ!#!*!*9J#3"e2rN!B!A`#3#2q +3"J#3&`%!B,lL!!%XH!!!!'%V8J"K+e)!9SK3!&DAbJ!+!'#lM!"JZj3!B,ZF!&D +ANJ#3"9B!!-m!!!%XJ!&'!%J"5!"*!8J!!3!"!!%!!!!,!!8!$MrpVk$9Hl3ei8G +!!ZhEDZFG)A@k!Di!#3!#!!%!!J!$!!3!"3!'!!F!#!!*!*!'!3!!!`!"!!-!!3! +"!!%!!!!5!!%!$J!+!*!&&3!!!!`!N!F"!!i!#J#3"48!!3!-!*!(!3!1!!S!"!! +!!"8!!`!-!*!(!3#3$`%!N!S'"38!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3 +Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj! +%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q3"#i!!#$rN!3Z!!!Jrj!%,J!!)2q +3"#i!!#$rN!3Z!!!Jrj!%,J#3"JF!!3!!!!8!!J!!!!B!N!85!*!4%J#3"4`!!!' +"!!!""!!!!Cd!!!&L!*!)EQpbE@&X)'*[E'3JDA4KE'PM!*!'!3%!&3!"!!`!N!F +9!!!!$!#3#!&l!!!!T3!!!BN!!!$V!!!&BQ&cD@-!%!&'!!!"S!!!!@B!!!(LpS! +"CJ!!!D!!!!&8!!!"T`!!!8m!!!(-!!!"6`!!!F`!!!&2!!!"c!!!!9`!!!(L!!! +"A!!!!H)!!!&F!!!"iJ!!!@d!!!(G!!!"A!!!!H)!!!&,!!!"j`!!!8B!!!(A!!! +"4J!!!GF!!!&'!!!"e`!!!8F!!!(3!!!"4`!!!G!!!!&(!!!"d!!!!8F!!!(3!!! +"4`!!!G!!!!!'!9-!!!%p!!!"D!!!!B`!!!&S!!!"23!!!9J!!!&U!!!"8`!!!B` +!!!&H!!!"L`!!!@!!!!&h!!!"B!!!!A3!!1e`!!!"!!!!$p8!!!l9!!!!jJ!"$NC +"8&"-r3#3&`pdCA0d4h*PBA4AEh*VFc)#!!!!@PG59&T&3P)!N!CD9e*8@N9#8J# +3'-hM@C`!!"S)!!!3Z`#3K4S!!3'[!P8!+`!&!#X!"3(D!PS!+`!&!GS#HJ!!!(J +!$`!!!%J!5!#3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3! +!C!!"!!!!!3!#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!!!$!J" +Jrj!)UP@U9DT9UP8!N!KrrrrrprrrrhrrprprrrIrGrrrrhIrrrphrprrGrrprhI +rhIphrphr9IrGreArhIp9rqlr9IqlreAr9Ip9reArGpehhAIGGpe9[eAr9IY9re@ +l9Ip9ZeAr9Ep9lPAl9Hj9ZeAZ9EY9lP@l9HT9Ze@Z9ET9Ue@k9DY9kP@U9Dj9UUS +9UP@U8DT9UN@U9+T&UP5U4+S9UN5U8DT%UK'U4+S4UN#U%DS%UK'U4+S!UN5U!+T +!UJ#U"+S!L#+))SJLL#+U!+S!UJ#U!+S!%3#U!%3!UJ!L!+S!)J#)!#)!L!!L!)J +!)!#)!!)!L!!!!)J!!!#!!!J!J!!)!)!!!!!)!!!!L%3L%BK%)K%4)N5)%5*%L)" +!)"!)"!)"!3)%#"!J3)$JF$JF$JH$`B-($K`iF1$"L%3L!)K%)J!4)N3!%5*%!)* +%+"!S4))"QFaQ-jR-CM0hZphZGl[GlZlGZhIZhEYhIlrIlrIlrIlqrI[hlpqrIaq +2aq2aq(`qq2(MaimI2RahZphrGl[GrqlGZrrZhE[rIE[AlpHlIIicCXbC-fE-QDU +3#-b3#)L3#2m!!!$r!!!!J*!)r`#3"`L!J!J)J)!)CJ!!!*N!!!$rL)L)riL)L2q +!N!Ir!2m!r`$r!2rr!!$rr`!!Gj!)!2rrr`$rrrprN!J!rj!(phprprGrIrHCrrr +rC[rrr`"hGhF!GhGh!(q3"r#3"!q3"*PQCTQCCQDC!!JF2Rmq(!J!#"3U95S8#,% +`!a[B`!b0J"!#)!%)3!3)&#*"J!%#")$!)4)-"!)"ri#!J2m)#!J!Ihpr!2Ihpi" +!)!!#"!J!JN3j4))"!3(iG#*(MaFLFEqJ[lfpr3Ap9D"!3&8+"!5)4#)4%5*%L)& +#*"L"3L3BUJ#!!)J!J!!$K%J`$!)"!B#!36i)#"6M3+!!!!3+!*!%"Q3!!J!)rj! +'r2ccm`8&rrpNC!)#hGd)#!B'm[))#)5%4NB!!+@P!*!%e03#!UZVkZSI(lHh&"3 +!!'4N%4&@9L`X"3@3!*!!FA%k1X#3"S#3"N#3"J#3"[q3#Xc-rj!%QCRrN!4QC[q +3"$-crj!%!!$rrmc-rj!%c*!%rrr-c*QCrrr-c'CQrrr-c$-crrr-c!!!rrqCQIq +3"*QCc-crrjQ3"2rrQCPQC[rrQCNc-rrrQCN!!2rrCQErN!4QCXc-rrpQCTQCrrp +QN!6rrfCQ-c2rrfCQ!!$rrc-crj!%-c2-c2rr-c1CQIrr-c0QC[rr-j!%rrmc-`! +!rrm!!2q3"!!!c-crr`!!QCRrr`!!CQErr`!!-c2rr`#3"-c-rj!%c-crrmb3"2r +rQCR-c2rrCQE-c2rr-c2-c2rr!!$-N!6rrmb3#TQCc*!%CQE-N!3c-mb3"!!!c-b +CQIrrc-bCQFb3"*Q3"-c-QCPQCXc-QCNc-mc-QCN!!-c-CQErrmc-CQE-N!4QCTQ +Cc-aQN!6-c'CQ-c2-c'CQ!!$-c$-crrr-c$-cc*!%-c1CQFc--c0QCXc--j!%c-` +c-`!!c-`!!2rrc-`!!-b3"!!!QCR-c!!!CQE-c!!!-c2-c!#3"*QCrj!%QCRrrmc +-QCRrrjQ3"2rrCQDCQIrr-c1CQIrr!!#CQFc-rrqCQFb3"*QCc-bCN!6-c'CQQCR +-c$-cQCR-c!!!QC!%rrqCN!6-c*Q3#QCQQC!%-c1CN!3!!*QCCQErrjQCCQE-c*Q +CCQDCN!4QN!5CQ@CQ-c1CQ@CQ!!#CQ6-crrqCQ6-cc-bCQ6-cQC!%-c0QCTQC-j! +%QCNc-`!!QCN!!2rrQCN!!-c-QCN!!*Q3"!!!CQDCQ3!!-c1CQ3#3"'CQrj!%CQE +rrmc-CQErrjQCCQErrfD3"2rr-c0QC[rr!!"QCXc-rrpQCXb3"'CQc-bCQ@CQc-a +QN!6-c$-cCQE-c!!!CQDCQIrrCQDCQFc-CQDCN!4QCTQCCT!%QCNc-fCQQCN!!'D +3"2rrCT!%c-aQN!5CQ@D3#M-cCT!%!!"QCM-crrpQCM-cc-aQCM-cQCPQCM-cCT! +%-j!%CQBc-`!!CQB!!2rrCQB!!-c-CQB!!*QCCQB!!'D3"!!!-c0QCJ#3"$-crj! +%-c2rrmc--c2rrjQC-c2rrfCQ-c2rrc13"2rr!!!c-mc-rrmc-mb3"$-cc-bCQ6- +cc-aQCM-cc-`cN!6-c!!!-c1CQIrr-c1CQFc--c1CN!3c-jQCCQBc-jQC-j!%QCN +!!$-cCQErrc-cCQE-c$-cCQDCQ6-cCT!%-c0QCM13"'CQ!!!cN!6rrc13"-c--j! +%QCNcN!4QCM13#J!!-c-!!2rr-c-!!-c--c-!!*QC-c-!!'CQ-c-!!$13"!#3"[q +3"!!!rrr-c!!!rrqCQ3!!rrpQCJ!!rrmc-`!!rrm!N!6-c2rr!!$-N!3!!-c-QCN +!!-c-CQB!!-c--c-!!-c-!*!%QCRrr`!!QCR-c!!!QC!%!!#CQ@CQ!!#CQ6-c!!# +CQ3#3"'CQrrm!!'CQc-`!!'CQQCN!!'D3"!!!CQBc-`!!CQB!N!3c-rrr!!!c-mc +-!!!c-jQC!!!c-fCQ!!!cN!3!!$-c!*!'rrm!N!6-c!#3"*QC!*!%CQB!N!3c-ql +Z!*!%hGd!N!5lZ`#3"+UU!*!%L)J!N!4hG`#3"&99!*!%4%3!N!3L)J#3""%4!*! +'lZi!N!6Gh3#3",Zl!*!%UUS!N!5)L!#3"(Gh!*!%998!N!4%4!#3"#)L!*!%%4% +!N!EZlJ#3"0hG!*!%ZlX!N!5UUJ#3")L)!*!%GhF!N!4993#3"%4%!*!%)L)!N!3 +4%Hk3"Yf3"VZ3"UU3"SL3"RH3"P@3"N53"L+3"K'3"J#3#33!N!B"!!!"rj!'!*! +*!Iq3"J#3"bd!!Iq3"J#3"eS!!Iq3"J#3"iF!!Iq3"J#3"l3!!Iq3"J#3"q%!!Iq +3"J#3"J%1!!(rN!B!N!B"1`!$rj!'!*!*!`#3"[q3"J!!!!,rN!B!N!N#rj!'!*! +(Y!!"lZi!N!5)L!#3"`%!!1lZ!*!%998!N!8"!*!%rrm!N!5)L!!!!!(rN!6-c2q +3"!#3"J(d!!)!#3!!!!5!!*!K"U3!!1!9rrm!!J!*!!!!#3!!rrm!!ZXq!*!%i"I +rr`!#lF)!N!6J'2rr!!,Z63#3"FArr`!#!!3!5!!!!!5!!!!*!!!!")!!!'Arr`! +#9#X!N!9Qrrm!!P4c!*!&D2rr!!*9,3!#!!5!!!!%J!"9T`#3"Arrr`!#9E%!N!9 +prrr%!P@j!!#2j!!!rrr!!PBB!!!!"J")!!!!")!!!!N!!!!%J!!!#3!!!!5!!!$ +(rrm!!QrR!*!&DIrr!!,`JJ#3"3)!%J!!!!5!!*!%Drrr!!,`p!#3"@hrr`!#mCS +!N!6J!2rr!!*6E!#3"3%!"J!5!!!!")!!!!%!!!!%J!!!!3!!!!5!!!!#8kF!N!6 +`!2rr!!-*-J#3"2!"rrm!"!!*!!!!")!!!!%!!!!%J!!!!2!&rrm!!`PM!*!%i"r +rrb!$#Ad!N!6J"[rr)!-!"J!*!!!!")!!!!N!!!!%J!!!!3!!!!5!!*!&i#,rr`! +$#Td!N!6J"2rr!!-+V3!#!!%!!!!%J!!+``#3"1!$rrm!!`V6!*!%m!Err`!$#bF +!N!6`"rrr!!-,T!#3"!'!!!%!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!Di +!!J!!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES"0!!'!!!!#`!&!!irrDqJeAZ +d0H&(3!,YffVR(5&eZJ(Z!!8!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!3) +!"!!!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES"!!!"!!!!#`!&!!irrDqJeAZ +d0H&(3!,YffVR(5&eZJ$Z!!)!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!2` +!"J!!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES!,J!&!!!!#`!&!!irrDqJeAZ +d0H&(3!,YffVR(5&eZJ$b!!3!!!!,!!8!$MrpVk$9Hl3ei8G!!ZhEDZFG)A@k!&B +!!`!!!!X!"3!12rf[S09lY$AK4d!#lGYUjadKGES!#!!$!!!!#`!%!"%rr1bM##J +4R&NN3!1,YXK)Bme$j3"@!!!!+!)!J!!!!`Cf-Li`,M%D8hPYB@jdC@-J4h*PBA4 +AEh*VFb"f-Li`,M%!!!!9&&0jE@&ZG'9M)%GbC@&d9fpbDh1U!!!"!!!!$p8!!!l +9!!!!jJ"@LhJDFJ!!!"`!jJ!*9e"66J!!!&*38Nj8!!!!AP""9#-!!!"U8'a89!! +!!(C1H%9N!!!!JNGb4&-!!!#14'&)8`!!!*T"8P*c!!!!TRCPFR-!!!#b8e45)!! +!!,i!!Irr!*!&9SG-!!(rr`!!!"i!9SL`!!(rr`!!!*S!9SG!!!(rr`!!!k!!9SF +N!!(rr`!!#JJ!9SF`!!(rr`!!#K!!9SKm!!(rr`!!#a3!9SFd!!(rr`!!$3`!9SF +X!!,rr`!!$T!!!&D(',rdrrm!!!km!&D($#QJ: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/Acta_1.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/Acta_1.0.hqx new file mode 100644 index 000000000..af338e613 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/Acta_1.0.hqx @@ -0,0 +1,24 @@ +(This file must be converted with BinHex 4.0) +:#R4PH(3a,Q&MG'%!Eh4XEN&$9%%!N!3#V3!!!SZ@J`!$!!%!!3!!!"!!!!!-!*! +*%@%JFfeKE'`J3@0dB5"QD@aP!!!!&J!"!*!&$J!+!"!!!!!-!*!*"J#3"`%!!3! +!!"!!!3!-!*!*&@*[E'3JDA4KE'PM)(9ZC'9bE'PZC3!!!'B!"3#3"3i!#J!3!3! +!$!#3#33!$J!+!"!!!!!-!*!*"3!1!!S!%!)!!!`!N!N,!!i!#J!3!!!!$!#3#3` +!$J!+!"!%!!!-!*!*"J#3"`%!!3!!!"!!!!!5!*!*%c%i)("[D@jdFb!a-L"`EfP +ZG(-!!!!U!!)!N!88!!m!%!!!!")!N!N+!!i!#J!3!!!!$!#3#3B!N!F"!!%!!!! +@!!!!$!!!!!%!N!823fpeFQPPFL"$D'PMB@G[!!!!+J!#!*!&$!!+!"B!!!!-!*! +*#!!3!!`!N!8-!*!*"J#3"`)!!3%!N!B-!*!*"f&Z)'PdC@d!!!!@!!%!N!83!!` +!N!8-!*!*"J#3#3%F&!!%TD@Pe`!!R!"!J1j)!'PG1!!!S#-!BK&)!'*V!%#!!*! +&'A6@!!%!D3!!!(@*k!"eF%3!"kSf!*!'(X`!#!#-!'N!N!N#!'*Z`!"LEaJ!D8R +U!!(qNJ!!!'*V!!!!(V`!!"l-!!Kqd!!)!'P'VJ"T4VB!D8Dq!"YB'!#3"4YB'!# +3#@P+6J!"rMJ!#!!%!!!!BJ#3$Zd"!!"16&42$5X!!!%!!!!"e3!!!08!!!#f!!! +!!JCdCA0dE(ID!J!#!&4&@&4-9e4&!3!!R!#!!!!+G'9iG$%ZB@0dB3!#!!)!Eh4 +XEN&$9%%!N!J#!'pdE'j"3e4"!*!Bcl8aRJ#3"J+,!*!%%3#3"!),G'9cG%aA4h* +KF'J#!!)!9%9B9%aA9%8"!!(!!F!!N!3#G!#3"!'m!!!)!*!&!e3!!!J!cP8Urmj +9+a)!N"B$k3!"!*!)!qd!!3#3$!`!N!3#!!!!!J#3"3)8(!!!!"3!%!!-!*!(%!! +-!*!0"35PTDAA!!!!H!!2!!!!5!")!*!%![!#32rarqi$#3*5B`)&+!2m!3!!!!& +S!@J!N!31X!Y!!!%"!!"N!!%!!!!"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3Z +D!!J"!*!0'3%!!!!)!$B!%J'U!FS!!!!B!3#!!*!%%%&MG'%J3faKFh0TBb!a,M! +!!!%!!!!"e3!!!08!!!#f!'*[9"S8!!!!(!#f!!C-38*-!!!!1P&28&3!!!"'88K +%8J!!!&*69&)J!!%!AP"6493!!!"f9e0*@J!!!)*fCA*c!!!!MJ!!rrm!N!9LD`! +!!2rr!!!!"J"LEaJ!!2rr!!!!$!"LDX!!!2rr!!!!*!"LDLJ!!Irr!!!!+!"LDKJ +!!2rr!!!!-3"LDI`!!2rr!!!!V3"LDM3!![rr)!!!Z3"LDL4LL!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/BeagleWorks_v1.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/BeagleWorks_v1.hqx new file mode 100644 index 000000000..ab059fee7 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/BeagleWorks_v1.hqx @@ -0,0 +1,49 @@ +(This file must be converted with BinHex 4.0) +:#R4PFh4#C@&RE'8!3PGhF%*ADh-"!!!!#H-!!!&Lml4#9fYc3PGhF%*AGh!!N!8 +"!*!(!3#3"J%A!*!%"D`!#3!!!!N!N!`"!*!%&`!$!!m!!!")!%J!N!3#m!*!rr( +rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`! +"!*!1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!!!4F!N!J"&`#31!C(C@jPGQ%(3Qp +[DfeKEJG$D'PMB@G[!!!'P!!!!MJ!!3!!"S)!!!!'!!-D&!!!!"`!4J!"Ge"[F`! +!!"*69&)J!!!!(J2Trrm!N!Lrp2rr!!!!$!#3"'Yc!!!""!"D'*J,3Q9KCfaP9fp +bDh-!!!!8!&SBQ!Y#C@&RE'9AEh*VF`!!!"3!@KLB#d*PB@GXC9G[FQYc!!!!&!" +D'*J,3Q9KCfaP9fpbDh-!!!!8!&SBQ!Y#C@&RE'9AEh*VF`!!!"3!@KLB#d*PB@G +XC9G[FQYc!!!!&!"D'*J,3Q9KCfaP9fpbDh-!!!!8!&SBQ!Y#C@&RE'9AEh*VF`! +!!"3!@KLB#d*PB@GXC9G[FQYc!!!!&%%JFfPYF'aP)%*PB@GXC9G[FQYc)'CTE'8 +J1L"NC@CKG@ad)'C[ER3J4f9ZCACK)$%bF(30!*!&!3#3"Q*[E'3!N!8"!*!')!# +3"3)!N!CTG'&XD@-!N!8#!*!')!#3"33!N!CeEQ4PFQaTEQ8!N!8%!*!')!#3"!% +!N!GcGA"PFR0MFQP`G!#3"!-!N!GcG@*cBh*TF(3!N!3'!*!(GA"`CA*MBA0P!*! +%$!#3"da29d953d&643#3"!J)!*!'Eh9dE'PZC3#3"4J!N!CcD'&NEhF!N!83!*! +')!d!N!IX!*!%FQ9N)(4PH(3J!*!'!CJ!N!4RFQ9PEL"dCAKd)!#3"J%3!*!%H@9 +XE'ph)!#3"f3!N!30!*!*!3!!BQp[DfeKEL"QEfjd)!#3#3-!!'0SD@0KCfmJ!!! +!2!#3#'0SD@0KCfmJ0$K`G#`J!!!!1J#3#'0SD@0KCfmJ-6"`G!!!!!B!N!8#!!! +0!!%6!!"N!*!1%`%!Bf9ZG'9b)'aTEQ80!!%6!!"L!*!1%`%!FQPRD(3JE'PZC3d +!!4-!!'J!N!i6!3"QG@aX)'aTEQ80!!%6"3"K!*!1%`%!-68`*5"TER4PFQaTEQ8 +0!!%6#J"K!*!1%`%!-M!`*5"TER4PFQaTEQ80!!%6!!"K!*!1%`%!!!-!"!-!!!% +6!!"K!*!1%`%!EQ9h)(0PBh4TEfiJGfPdD#"dGfmJBfpXG@eZF`d!!6%!!(%!N!d +&!#!!!!%J!$i!!!-J!&J!!!)J!(%!!!3J!)`!!!8J-3%!GfPdD#"cEfeP)(4KBR- +0!!%V!!"K!*!0"!!J!!!")!!q!!!$)!"B!!!#)!"a!!!%)#X"!("KCf8!!J!#!J! +JC'&dC5!!!J!$!J!J+$B[-c![-6-T)(4TE@8J!!)!"!)!)#JJ1$Sa15N0!!%V!!" +K!*!0"!!J!!!")!!q!!!$)!"B!!!#)!"a!!!%)#X"!!d"!0`!hJ$J!1)!j!%!!#3 +!!!!f!!!!0J!f!!!!0J!"!#"CM`!"!%J!!3&`6UeJ%L"I)"#`VICBCKS[$$m&-!C +53$m!-!D3!%3r!(!!(`"1ZZrD%`!!B3#3$K1klm5k4f0)F!!`"NU!CLT`!$!()'h +fY0#!)J$5JG#"FJ!b-!J%5S&Q%#m-2`F`"j!!46m!6VV`I'!@,``r"h!!-!Gb!$) +&N!#"8N!r!%kkm'49Mbm-2`Fr"A!"(`"1Z[e5,``r,ICB2bhf@Mm&2`3I,[rr6VV +cR"eZrrN0!3d"$3%0!3$F!0i!i!$L!1i#!!!N!!!!0J!!!$B!0J!!!$B!!3!S!!% +!!3&`!!%"R3!#!BiJA`'G!Chf@'BD,``r"6!'8N!r!$!'N!"%2`"`!"m!6VV[fK- +!!'%!N!i6ZZr%ZNGM5(!!-!C+J'BUF!!`"b"YpV63J#)!dS(3JA)!-M!)"%U"CK! +[$$m(-!H3!%8r!%kkm(aJ&Lm-2`G`!$!(FJ!b"C!!J9*!2`"1Z["N9Bm[$$m(2`9 +`!4m!6VVp8Lm-2bhf@$mYpPSr"6m%(blrrdkkmj`GE[rj$3%0!3d"G'KP)'C[Eh4 +PFJd"!!!"!!1`!!!%X!$N!!!&P!$Z!!!"`!!!!ki"$3!-!!!!)5!!!!!#!*!&!J# +3"!%"I`&%!*!%!Dd",!!`!!!!)5!#!!!!J!!I!!!!J!!I!!%!L!(X!*!%!Dd",!! +`!!!!)5!#!!!!J!!I!!!!J!!I!!%!L!(X!*!%!l$rN!3!A"Q8!!%!!`!3!&`CN!! +!!3!3!!!#)!!!!L!!!3&)!#!!N!3"i!!"!UJ#G3!!,`%[#`&J!P8!(`!3!8J!9J% +d!'8"03!"!!%$+!!!!S3!!2r`!*!%!aJ#C!!!!%J!!!")!%J!!!")!%J!!!")!!! +!!3"F'Ca#3!"aFHS!FA(U!(&akJ#3"J1Z!!!$VJ&%!!!#(!!!%`!!B3#3$K1kl`! +")!!q!!!$)!"B!!!#)!"a!!!%)#X"!!!%)$%"!!!&)!#39J%"!Im"N)J!A"QB!!% +!E!!-!!!!)5!!2bJ!$NKZm[%!!!%!!!!"(!!!!"`!!!"'rrrrr-b3"1$Xc*!%rrr +mcrrrc*!%i1c-c-c2rrm-+R4PFh4#C@&RE'8`!J)!!!"#9hG`3PGVF`#3#%*AGh" +#9fYc!*!BcI@E+3#3"J&Lc*!'crrrc1$YhrrrlT!)rrrpi!lrN!i!$rrrc*!+rrr +`rrrmc-c-hGhGh-c-c-rrN!61lZlZc-c-cZlZlXcrr`rqlGhGhZk3"0hGhHl[m!! +!!$B!!3!"!'3!!3!"!b!L!!!"!"J!N!3)!%i!!J(F!RB!!!!-#d*PB@GXC9G[FQY +c!!!"!!!!!4`!!!!F!!!!4J"F(6JD&!!!!"`!4J!"Ge"[F`!!!"*69&)J!!!!(J2 +Trrm!N!Lrp2rr!!!!$!#3"02[: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_1.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_1.0 new file mode 100644 index 000000000..3d3118a5b Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_1.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_2.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_2.0 new file mode 100644 index 000000000..8526384a6 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_2.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_6.0.cwk b/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_6.0.cwk new file mode 100644 index 000000000..9162e3d2c Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/ClarisWorks_6.0.cwk differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/DOCMaker_4.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/DOCMaker_4.hqx new file mode 100644 index 000000000..e28253470 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/DOCMaker_4.hqx @@ -0,0 +1,1496 @@ +(This file must be converted with BinHex 4.0) +:#(4PFh3ZC'dd!%&38%a%Dd"3)3#3"J%Ka9,!!*!%!3!!!4Y@!!%D9J!!"Qm!N#! +)G'9cG#jNE63!!J!!!%&38%a%Dd"3)!#3#d&38%a%Dd"3)!#3&md63hd!N!8")F8 +!N)3@mf!+!!"$4%9'!"i!!%MRi-K1ZJ$b3IVrkL!)S&91ZJ#3!%cI%`G1qJ%@3IV +reY(m!!!@lb!)S&91G8MR"J"C6b"[!"!LE`!8,#m!'"kB(eJ!!4pB!!)I@!!$+KG +d!'"%%KJ3!3*!!)"R$0)"%!&)J%M!e)"J+"k"(eJ!!4!"!N!!3'F--"IP51*!5-$ +8J'!1(eJ!!KpB!!-N&q@+iS,GX5J!8i9+K@ki@%p-h`"J6R9)ja!J*%!J,!!!*JU +@J'G!5S"Q(%)X!!3`2+LITdB[#$!mSCLM4V(I9X"%!"P!!!3[!bm+6VVr4#m!6VV +r6Nr[!!`T5J!!5L`!"'F%F!'KQ%cI"!K1G8(kr[V4r!!!&ZSJ#+"9`Ba1G5"I)NM +5f,#BE!*1dE#BE`*1d6)BX*KQ"0$36Y"85&(*rr41d8je51F3)&P2*'m!&LB[!"" +#Pc![!"3-3!!,BPc33$!l!!C1q`!#!"J!)J!b!$`!8J"5!&)!5J"5!&)!8J"5,`S +[!dkk#cjJ-&P2,`S[!dkk%!)J(bk!B#![#Lm$6VS4LQ!@,`S[!cm[!#*1ZK'`B!J +[#Lm$6VS6%#pA!"aB6dcI"!JJAdr[!!a1d&92)'m!"L*[!!S`+3!#X'J!!QBb)'m +!"L*[!!S`+3!'X'J!"QBJ)'m!"L*[!!S`%E"3CK)JE`!')Qm!#M!T!!5`D!!%C`4 +`!'!#F!%I3!!"(fm!!3!19%mJAe"26Y")jai`6qrrcL4[!&3QE`"32#m!6L"51#J +!&L"51LJ!&#"50LJ!%VC%E`SJ8M&%!")f"'!-YN9X##"5-88!%MB&,Va!!)!!3Um +!"%*[!!J`!j!!46p!!!T)E`!+5'm!$Mmm)!kTkc!%8d!r3!!85'm!&%K[!"Jr2#! +1UHX[I%!&lJ!!(N+[!#*#E`!Q5'm!&%K[!#)r2!!'UHY)E`!+5'm!)Mmm!!5TkdK +A5'm!)Mmm!!#Tkbp[!"i!+#p[!#)!,$p[!#B!-&9298pC6dK[!$#S4#!I,`#SE$! +I5-![!+KV-"mf!#m,F$V34Mm!3QG`5Y"'2`!r2!!1U+FN5c!U!!,33c9!!!)`+J! +'d%-e3!!'6qm!-NcI$(JJAdr[!!T1d%MR(M"2lrqZ(#m!EN)[!"%[,`"b)&qJ+8S +'C`!!eL"[!()N8&P25(J!6L!IS5)ZL#"I*8J!(#"U!"`J8$&U!")!4P92UC3`(b" +U!"`J8$&!!%KC6kMB)&mLDJ!F)P%M5!!B@8qSf#"I)QS!(#*4)dJ!1&P2U0JJAb* +U!"`L850)!#KC6kMB)&mLDJ!F)P%M5!!F@8qSf#"I)QS!(#*4)dJ!*&P2U0JJAb* +U!"`L850)!#"C6kMB)&mLDJ!F)P%M5!!X@8qSf#"I)QS!(#*4)dJ!-&P2U0JJAb* +U!"`L850)!$3JDJ!F)&!JUJ!))@S!$!!%)'m!FL"3,bJ!(#"IS#P96b"[!(3J8#" +S!"`[%#"[!(JJ8%KS!!K1Z[eU%"pA`%3!'J!JE`"b)&!LE`"b)P%LD3!F)P%`+3" +'X'J!%PE!4!!B!#4[!()N8P#+0LS!"J4$!03%3`!39%0+"QB+5J9Q"NS%C`!$DNS +%Cf*+"QCH5J9Q@Kpm!!%!%5m[!(*)E`"12`01Z[eF)'m!FL43*NT3LdK[!%Sr+`! +#F!,38cm!U+JJDJ!F)&![+!!`U0dJDJ!F)&![+!!`5'm!6UMI)'S!(#"3-@S!%J" +'B!!$"#"[!()J8#*[!()L85*T!"`L85+S!!JMD!!-!!3JE`"b)&!LE`"b)P%LD3! +F)P%cD!!5!%C)E`"#,c`!!Irr,c`!%3!2U+G)E`!kF!l33cm!2c`!!A!Hd%-r!$m +m!"'STdK[!#*`(G"$2`!r2!!"F#h33cm!2c`!%DLR5'm!%R!Xd%-r!$mm!!&`20" +$2`!r2!!4U+G)9h!ld%-r!$mm!!%`!`C!!-3r!$mm!"'STb"[!()J8#"S!"`J8#& +A!!JKE`!%!!a)E`!D-!-'3!$$2`!r2!!"-!-'3!$62`!r2!!4U+G)E`!U-!-'3!$ +52`!r2!!"-!-'3!$L2`!r2!!4U+F[,`"b5'm!6Mm$6VVm##"[!()J8#"S!"`N8#" +[!()J8#"S!"`J8%KS!""`!Y"[!%`r!$mm!!%`,`"%98!r!$mm!"'STb"[!()J8#" +S!"`J8#pS!"!!-LpS!"3!0L"[!()Q8#4,8)T)E`"#2bS!!Mm5U+K)E`!k2bS!!Mm +5U+K)E`!L2bS!!Mm5U+K)E`!52bS!!Mm5U+K)E`!D2bS!!Mm5U+K)E`!U2bS!!Mm +5U+K)E`"+2bS!!R!#d&)r!+LS)'m!FL"3)'J!(#"35'J!#$mU!!)r%ULS)'m!FL" +3)'J!(#"35'J!%$mU!!)r%ULS5'm!-MmU!!)r%ULS)'X!(#"3,bJ!'+MG)'X!(#" +3,bJ!1+MG)'X!(#"3,bJ!++MG)'X!(#"3,bJ!)+MG)'X!(#"3,bJ!(+MG)'X!(#" +3,bJ!*+MG)'X!(#"3,bJ!,+MG)'X!(#"3,bJ!-+MG)'X!(#"3,bJ!0+MG,fX!#!! +),fX!$!!-)'X!(#"3,bJ!'%K[!!bShb"V!"`J8#mS!$K)E`"'U0mJD`!F)&![+!! +S5'm!2UMI)'X!(#"3,bJ!)%K[!#DShb"V!"`J8#mS!"a)E`!@U0mJD`!F)&![+!! +N5'm!(UMI)'X!(#"3,bJ!,%K[!#kShb"V!"`J8#mS!$")E`"1U0mJD`!F)&![+!! +d5'm!0UMI)'m!FL"3,bJ!(#"IS#S[,`"b)&qJ+Kp[!"%!GNr[!&*-h`ai)&p36dl +36qrrm#"[!"3ZN!![D!!%!!3II!"M!!`II!"[!!dII!"Z!!iII!"`!!pC6bm[!"! +r,`!JU"mJAbp)!!K+V`!)Ca![,`!)5'm!"+Mf,bm!#+QM6qm!%#"IA%p1d#m+6qr +rm#"[!"JZN!![D!!%!!4C6kMB)&mN5#m+U(T)9kKl,eF!##p[!!3!$$mm%j!!5'm +!#Nkkrh"`"Y"[!!Sr!$![!!jE3$m!U*-r2!!"U)Fr2!!*U)Sr2!!"U)P#CkL),bm +!(+L%98m[,`!HU)``(h)'dQm!#Y*!A%%r33!+-#m!$&Y!8d"E3$p!!!K)E`!)2bm +!$Mm[!!j`#G"[!")r!$![!"*D3$m!U+Fr2"125'm!#Nkkr[)[#UKj,`USf8r[!"! +NAb"I8%p1d%MR%$"2lrl`*'m"+#"[!53ZN!![D!!%!!4C6kMB)&mQ5#m,U(T)9kK +l2c`6L5"5)'J!(#"3)'J!1#"35'J!!NkkrT`r2"16)&)JD!!F)&!JD!!S)&")D!! +#6VVqJMmm%iSJ8L"S!"`J8#"S!#!J8%KS!!*1Z[jS2c`6Lb"5)'J!(#"3)'J!(#" +35'J!!NkkrNir2"1-)&)JD!!F)&!JD!!N)&")D!!#6VVq0$mm%idJ8L"S!"`J8#" +S!#`J8%KS!!*1Z[iD)&)JD!!F)&!L8M!T!!k`D!!5E3!!VNS[!5"R3L"5)'J!(#" +30LJ!4M"$)!K6J1'))&)JD!!F)&!JD!"!dF"$l`!))$`!!!%!SLj)E`!))&)JD!! +F)&")D!!36VVq&L"5)'J!(#"3,fJ!%!%),fJ!&!%--#m"#PG!2d!"#M![!3T@3$p +!!3ir2"145'm"#NkkrBJJ8L"S!"`J8#pS!"!"##pS!"3"$$p[!3i"#M![!3T@3$p +!!3ir2"155'm"#Nkkr9K+,`%LCbir2"1))&)JD!!F)&")D!!)6VVp2Mmm%iiJ8L" +S!"`J8#"S!$!J8%KS!!*1Z[dN,`ZSH5m,U0P2l`%360m-##"I6qm!$%l388mJE`! +-,T!!,fJ!"!!%5&HSF%K[!!5SF#"[!"!JPb&[!!3!"&"2,Tp1G8MR(L!NE`!H1Lm +!($`[!"Si,`!B0JCJ),T$CJ`[#Mm$(c`!!DP&B!J[#Mm$3LHT43a$IrpR"P*$YN4 +[h%cI"(JJAdr[!!T1d%MR($*2lrrJ1Lm!5KJ[!%3QE`"!*'m!2#"[!&![8!!B,fJ +!"!!F5J4R"MBm!+9J!RB55&G)E`!F6VVr9#p[!!3!(#p[!!J!)%S%@%pR2NK[!!k +SG$(&#kC+,`"'C`j)E`!5UNJ[,`!5U(0J$%K[!!UT%#m[!!USFcm&U)Fr,`")U)S +[#cm55'm!(+P$,`Xr%Mm$U83[#cm52c`!!992,`ZT8$!I2`"1Z[m36Hm!'&P2,`X +`&Y"[!&3r!$!Z!!,3E`"B2`!r%UJ,)"mQ!%S%Caa#H!ZQ3QHSKd*RU)S[,`!1U(- +[#cm52bm!(+P%5S0@`%3!(d!!#8U$C`T96bm$U'X`(c5!(fm!#3"86qm!)%cI6$J +JAdr[!"K1d%MR($"2lrlU+Lm",P92UC3`(cJ!)'m"-L"3)'J!(#"32bJ!5+QB*'m +"-L458)Sf+J!'"%-!e!4$!""83e92,bm"0%*R3LG1Z[Bm%"pR8L"[!6)J8#"S!"` +J8$pS!%B"&$"[!43J#&1!iBJJE`%b)&!JD!!F)&!JD!"!dF"$l`!8)$`!!!%!SLj +)E`!8)'m"0L"3)'J!(#"35'J!%%kkqcS[,`%b)&qJ+5"[!6)N8#!&6VVcU!25!!! +!&!!!!)%!"`!!!"3!,!!!!"8!HJ!!!"i"'J!!!"m#DJ!!!#!$"J!!!#%$9!!!!#) +#X!!!!)%!UK!U!"&b!")!$%%!&'BQ-#S!%V"U!"4[($mm%ldJDJ!F)&!JD!!F)&" +)D!!#6VVkB'!!!j3[,`%b)'S!(#"3)'J!(#"35'J!!N)R3LG1Z[YNB!!$G"!U!"& +b!")!$%%!&@BQ-#S!%V"U!"CX($mm%liJDJ!F)&!JD!!N)&")D!!#6VVk$'!!!d! +[,`%b)'S!(#"3)'J!*#"35'J!!N)R3LG1Z[X3B!!$)"!U!"&b!")!$%%!&@F1%#S +!%A)!%J!-33!8CKi[,`%b)'S!(#"35'J!#"mm!!%I2!!"6VVkeQ!!!ZB[,`%b)'S +!(#m3(c`!!8)R6VVk[Q!!!Xi3+J!4FJ!5!!a"!"jQ!!+q)'S!(#"35UJ!2'F!!V" +)9kPb2fS!%J%8,bS!(#"IS#NJDJ!F)&!JD!!d)&![D!!#!!`[D!!'!""96dK[!!i +`,`!)N!"[!"4C3$m!,c`!!`!#2c`!#5"U!"`J8"mS!%9#*b"U!"`J8#mS!$a)E`% +U6VVmI"!IC`!!a$!U!"+`E`%8C`!!Z$9[!43!%L"[!6)J8#"S!"`J8$&[!43!4Lm +[!6*)E`!)2`01Z[,%*NT3LdK[!!3r+`!#F!,38cm!U+JJDJ!F)&![+!!`U0dJDJ! +F)&![+!!`5'm!#+MI,bm"-L"[!6BJ8#"S!"`J8%KS!!JI2!!"(c`!!8kkqE!`E`% +8)!K6J1'))'m"-L"3)'J!(#"3)'J!30(!3qm!&#!m!!!"!+)Z5'm!&#"[!6BJ8#" +S!"`J8%KS!""1Z[LQ,bS!(#"IS#TJ!!&i)'S!(#"35LJ!4'F!!@S3+J!4FJ!5!!a +"!"pQ($mm%lXJDJ!F)&!JD!!i)&")D!!#6VVi$'!!!8![,`%b)'S!(#"3)'J!1#" +35'J!!N)R3LG1Z[N3B!!")"!U!"&b!")!$%%!)QBF2c`6`#"U!"`J8#"S!#JJ8%K +S!!*1Z[I#B!!!pLm[!6)JDJ!F)&!JD!!S)&")D!!#3LG#*dkkq-CJ!!$@%#S!%A) +!%J!-33!JCLB`+J!5X'S!&'mF2c`6[#"U!"`J8#"S!#!J8%KS!!*1Z[GZB!!!SLm +[!6)JDJ!F)&!JD!!J)&")D!!#3LG#*dkkq(*J!!##%#S!%A)!%J!-33!KCL3`+J! +5X'S!&Q`D2c`6[b"U!"`J8#"S!#`J8%KS!!*1Z[FDB%i[,`%b)'S!(#"3)'J!,#" +35'J!!N)R3LG1Z[JJB$"+K@BB,bm"-L"U!"`[%"mm!!%I2!!"6VVi"'!8,bm"-L" +U!"`[%"mm!!&#*dkkpqi[,`%b)&qJ+Mm%UCK2l`%@60m-1#"I8%p1d#m+A8p96kQ +8-"mqJ#"[!")J8#"S!"`J8$mS!%LTQ#m[!")JAk!T)'m!%L4398m[,`!3)'S!(#" +3,bJ!-+MS%"pR(Lpm!!!!J3!#)'m!%L"3)'J!(#"3)@m!$J"+B!!"(&92,bm!%#" +U!"`J8#mS!#LSk"!IC`T`)Lp!!!*J!!$m98m[,`!3)'S!(#"3,bJ!(+MS%"pR#R! +8,d!!!Q!!!0a96bm[!"!JDJ!F)&![+!!NU1J3(fF+F"8[3!!#B!!![&92,bm!%#" +U!"`J8#mS!$5Sk"!IC`T`(Lp!!!*J!!#F98m[,`!3)'S!(#"3,bJ!1+MS%"pR#(! +I,d!!!Q"m98m[,`!3)'S!(#"3,bJ!)+MS%"pR#(!J,d!!!Q"H98m[,`!3)'S!(#" +3,bJ!,+MS%"pR#(!K,d!!!Q"!98m[,`!3)'S!(#"35'J!#+LY%"pR*L"U!"`J8#" +S!$!J8$![!"#`D!!%E!K`&#p!!!*J$(!9,d!!!Q!%3Um!!Lm[!")JAk!U2aHTQ#p +[!!)!&Pa2*&mJAe"26Y"C6bm[!!`JAk!T)'m!$#k3!#m[!!LSh5"A)'J!(#"3,fJ +!'!!),bm!$#"IS#TB6b"I8%p1d&92,bm!$$m[!!SI2!!"6VV[fK!I)&p2l`!+6Y" +)jam`6qrraL4[!&SJE`"H,e!!-LpS!!3!0LC58)Xf+`!'"%-!e!4$!""83b"52LJ +!&L"52#J!&$S[!$3J8MJS!!VB3ck'5&G)E`!%2c`J$URV,ha!"Hi!!!T#V`!13Qm +!%M!(8d!r3!!85'm!&%K[!"Jr2#!1UHY)E`!+5'm!'$mm!!DTkc!&N!"%"%!!3&K +!2d!!(NK[!"j)E`!L2c`J$URV5'm!&%K[!#)r2!!%UHY)9dK[!#)r2!!!UHX[E`! +H!#J[E`!L!#`rE`!Q!$"96e92@8p)E`!`U%3J(bm!U'``(dM!,`#SDc!I1!!J8L" +S!"`J8$&%!%BJ8M&%!")[#NK[!$Br!dkklDK)E`!b)&)r+!!+)&*`!Y"S!!Jr!+L +S)&)JD!!F)&![+!!`U0dJ8L"S!"`J8#mS!$")E`!fU0p2l`!k60m-q#"I8%p1d%M +R(L"2lrlN,bm"1#"IS#NJE`%i)&![+!!F)&qJ+992UC3`(c`!)'m"1#"3)'J!(#" +32bJ!5+QB)'m"1#"3)'J!(#"3,fJ!5J!))'m"1#"3)'J!(#"30LJ!4L"[!6JJ8#" +S!"`J8#"S!$!J8#pS!!)"&#pS!!B"'#"[!6JJ8#"S!"`J8#4S!$!JE`%i)&!JD!! +F)&!ZU!!),fJ!$!!%5&F[22r1rq+SU5"[!6JJ8#"S!"`J8#pS!!J"$#pS!!`"%$! +[!!U3!'m"&Y"[!3j53$p!!3i`,`%DN!"[!!Sb,`%5NN!r33%5@8m[#Lm[!"")E`% +B5'm!%$mm!!&)H!!!U38J(bS!98m["DKV-"mi!#"[!6JN8!a%XH"[!!#@5'm"&$m +%3QHSU%K[!43[,`%m6VVpK#"[!6JJ8#"S!"`J8,CS!%CR!!$!,bm"1#"[!6`J8#" +S!"`J8%KS!!JI2!!"(c`!!8kkmc`JE`%i)&!JD!!F)&!f+!"'-%-J#&1!iBJJE`% +i)&!JD!!F)&!JD!"!dF"$l`!-)$`!!!%!SLj)E`!-)'S!(#"35'J!%%kkmLTJ9#" +U!"`J8#mS!$#Sh5"U!"`J8#mS!$")E`%BU0m`3b!)8i$KL#"[!6JJ8#"S!"`J8#" +S!%$4`%2[!!`J2!!!!3#L,NK[!!`JDJ!F)&")D!!36VVae#"[!6JJ8#mS!"`JAk! +U,bm"1#"IS#Sr"UQB6qm"(%cI"(JJAe"26Y!!N!`e")5!!!!!"63Z1#id+$3Z1#i +d)+Na16Jf,6%j16JJ4h*PC@iJ6@peER4KD@iJ8fpQG(GKFQ8!!!!U")5!!!!!"63 +Z1#id(8423deKDf9b)&0dB@jN,8&XEfjP)%4[Bh9YC@jd!!!!RJ!4$d&LEh9d)%4 +23deKDf9bb34'D@aP#e"KCf8J8f9dGA$*#&"bD@jdb5p3$NpeG("eG#"8CAKdb5p +2"dCTEQ6*,dB-4QPZC#""Cf&TELp(#e4bB@jcCQ9bb5p8"P&eDA3[834&C'Pd"&9 +ZC'm$3h9d"%0[F(N&8'&cG'8&3faPBA))3fpZG'9ZG(-59'&LE'8J6fBJ3fpZG'9 +ZG(2*!!!"Z`!F$90KGQ8J9%9B9#"8EmN29(*KER0QCA)JGfKPFQ8r#&4bB@jcCQ9 +b#&"bD@jdD@jR%P"bD@jdD@jR)%4[Bh9YC@jdb3T3FQpMCA0cD@jR&&"bEf0PFh0 +TEQFJ4'pMG@ePER6*(P0`EfpXD@jR)(4SC5"NEf0eE@9ZG#"dEb"NDA0Vb3a5CA" +KCfPZBA4TEQF%8'&RC6G%Eh9LE'8YBfaTBfXJB@iJDA4PE5"[FL"cC@aPBh3JB@i +JDA4PE5"KEQ3JF(*PFh-JFQ9dGA*Z$%C[Eh4PFL"*EQC[b3K6C@aPBh4PC!*[CQY +0C@e[FRNJDA-JGQ9bH5"XEhFZ)#"CEh8JFfK[G@aN)'PZBh*PBA0P)'ePE@pbH5" +cDATP)'PZ)(4SC5"'D@jNCA)J+'0SEfpcC5$54f9d)%PZCQr6)(9ZC'9b)(4SC5" +'D@aP)%ePER8T,JG$D'&`G'9b"5jdCAKd!D8%4QPZC!j3E'9KFf8JE'pMBA4P)!Y +$E'pcC5"0EhCTC4C6D'ph)&4KBQaP)%pQ)%0[ER4PER4c&NKTC'8J9'&LE'8J6fB +J3fpZG'9ZG(-"dJ(6!5i"1J%k!!!#+J)U!-X!*`$S!*J4!D!`13%!#J#3"!&@!J# +B!"!!b`!J!1J!Q!$,!#F!k!#B!-X!*`$S!*J!!!i+!Iq!2!(Lr!2`!(lm!!i+!Ir +!r`Iqr!2`!(lm!!i+!(MKjimq2!2!!"lm!!i+!(KK`iiH2!2!!"lm!!i+!(Kc`pi +12JI!!"lm!!i+!(Kc`pi12JI!!"lm!!i+!(Kl`pi'2JI!!"lm!!i+!(Kl`pi'2JI +!!"lm!"%2!(Kl`pi#2`r$i"jrM`r-!"%2!(Kl`pi#,`[(q"jr[mrH!"%2!(Kl`pi +#,`[22"iHHH2c!"%2!(Kl`pi!,`[2("iFF12R!"%2!(Kl`pi!,j[2(KiBm22[!"% +2!(Kl`pi!*j22(Ki`m222!"%2!(Kl`pi!*j2'(KiJm222!"%2!(Kl`pi!*j2!rKj +Jm222!"%2!(Kl`pi!*r2$rKjJm22'!"%2!(Kl`pi!)q2(RKl`rr2!!"%2!(Kl`pi +#)q22(Kl`rr2!!"%2!(Kl`pi#)q21(Krim!2!!"%2!(Kl`pi#)q2H(Kpim!2!!"% +2!(Kl`pi#)F2H(Kpmm"2!!"%2!(Kl`pi#)F2H(Kimm"2!!"%2!(Kc`pi')F2H(Ki +qm"2!!"%2!(Kc`pi')F2H(TiHm$2!!"%2!(KK`ii%))21(TiIF#2!!"%2!(MKjim +-F)222ji2H12!!"%2!Ir!r`Iiq)rhlrqrrmr`!"%2!Iq!2!(`q)raahqrc`r`!2m +!!!!&"%CTE'8!!!!&"&&eDA3!!!!V!!%!N!Mrrrrl!4323@*[GA3J4%p$6@&VCA, +*!*!%!5d!N!K)!!-!N!E,e2rrrrX%4@4TG!49EQ4[!&S!!!%Y!*!%!d0eG!"B!!! +%3fp`H3"$!!!&8'&cG'8!9J!!"80XC@&b!*!)&!!#!*!)rj!%"%CTE'8!N!3c!!3 +!N!Mrrrrl#%0[ER4PER4c&P0SEhFJ9'&LE'8J6fBJ3fpZG'9ZG(-!5`#3"3%!N!V +rN!8!N![rN!8!N!JMN!!M$`J)$`#3"%H3"C!!N!-)#!K(4dF!!04NC'53!*!$#2m +)#'4N4`!!e'4NN!#3!`m)r`J)C'4(!!$8C*'3"!m2r`m)C'4(!!$8NC!&$`rr$`q +4C%F!!04NNC!&$`m2NC'44`!!e'4NNC!&rj'4N50(!!$8C'4NNT!%rj+5C'4(!!$ +8C*!%NT+5rj*NC'4(!!$8C*!&NT+5C*!%4`!!e'53"T*NN!9(!!$84j!0!!$8N!d +!N!@!!*!%$rrr!*!&$rrr!*!%0c,-)!!$-c0hI-`c-!DlYhI2c,X`"VYhFXr-Zc! +'YhGb,bbl-!ChGh)[)RX`"VGhGb)RGc!'ZhGhIhGc-!DlYhGrGlX`"VZlGhplZc! +'ZlZhGlZl-!DlZlYlZlX`"M13"M!'CT!'!*!%3!"m!(`$b(k1I8jl6R2ZBrjapRM +ZI&jqIRpqIrjrrRrm!(`!I!2iIrjrrRrqIrjrrRrqIrjrrRrqIrjrrRrqIr`!!!# +!!!'!!!!#3!$rrrrmJ!!!")!!!!D"(()'J4*+"S+55JD#R()'K&"#"SI33JD%8%2 +'J!!!"S!!!!ErrrrqrrrrrUUUm(p&9F!c)UZB&K&@*!`)[rr'"&BB!`)VJ!-"&F! +$!)T`!`"&Vr-!)NBI!"'-!!!)'!!!"$!!!!*J!!!"`!#3")!!N!RrrJ!"J!-!!cr +jJ!Crr-!-rrjJ'Irr-$2rrjJRrrr),rrrl#rrrk`[rrmX,rrr,#rrrb`[rrmX,rr +r,#rrrb`[rrmX,rrq,#rrr'`RrrM--rraR"RricJ-m!C`"Q!-i!-rqF!"J!1!!2r +r!!!rrJ#3$)!!N!8$!!!!"i!!!!I!!!!-i!!!#f!!!"Y`!!!AX!!!0lJ!!#rB!!" +Xh!!!@'`!!0KZ!!#iGJ!"Z(F!!AKl!!0iHi!#q(f!"[Kp`!AiIX!0q(lJ#rcrB"[ +rrh!Ar2q`0rKrZ#riIpJ[r2rF,rrrh$!!!$`rrrrm$rrrq!#3"i$rrrrqJ%!!!S" +IrrU!ArrlRerrqi![J(ZI,`!lKLjlQi!Z!"Z!,J!EJ#lqfi!Z!"Z!&J!EJ"B!'i! +@rlZ!&J!EJ"B!'i!@[GZ$&J!EJCB!'i$fFcZ!MJ"lJ,i!qi#i$rZ2S2rlKMrrqi0 +rrrZ"IrrlJhrrqri!!!2rN!3Irrrr!!!!J2rrrrk!3!!#J&rrqS"IrrZIArrlJ#q +!Hjm[!$Z',J!EJ#i!'i!Z!!Z!,!),J#`'#i!8#JZ!&"i,J"3L#i!8C`Z!&!!,J"3 +!#i-@!"Z"PJ!EJ2B!1i#1!(Z![J$lJ,J2qiqJrrZ'2rrlJhrrqi&rrrZ$IrrlrJ! +!!rq3""rrrrm!!!%!N!FIi!!!(k!!!"rJ!!-33!!%S%!!#%#!(r#!q"!K%)Jh`K$ +S0iB3k$F'%1Jf"M$S0!CBk$J(@@Jd"c%S-J1L'$8"j"JfJ2JS0d!`5$HJ%+Jhd"& +S0qJ5k$Id"HJhqJ[S0rdAk$IqVqJhrerS-!!!#$rrrrJrrrrJ!*!+(q!!!"rJ!!! +Ii!!$(m!!"lr!!!rrJ"rrrrJIrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rr +rq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rr +rq$rrrrJrrrri2rrri!#3"J3!N$6rN!J!N"MrN!B!r`#3'2q3#!#3%b-M!!!!$`L +3"3m!N"-MN!#3!#-!$`L3"Jm!N")MN!#3"!m)N!B2!*!+4j!))j!!N!32#*!($dH +3"!#3"NF!N!BMN!#3"!m)#!Mr#*!%$`!!!%F!N!A84`"NN!3MN!#3"!m)N!6r#*! +%$f4N!%F!N!A84`"NC'3MN!#3")N2#*!%r`L3"!pNC!"(!*!&e%F!C'3MN!#3"BN +2#*!%r`L3"!pNC!"(!*!&e%F!C#14N!D*$`J)#!rr#*!%$f4N!%F!N!A84`!MNC! +(L3m)#!q4r`m)#!J2C'3!4`#3"G4()j'3#)N2$`J2NIm2#!J2N50N!%F!N!A84`! +MNC!(L3m2#!J2$`J)#!q4N5-!4`#3"G4(!!!MNC!(L3m2#!m)#!J2NC!%)dF!N!A +84`"N!#14N!H*$`m2#!J2NC!&)dF!N!A84`"NC!!MNC!(LBQ*r`q4N!8M!%F!N!A +84`"NC'3!)j'3#)RrNC!&)`!!4`#3"G4(!'53"!!MNT!)rj+3"#-!C!"(!*!&e%F +!C*!&!#15N!IrNT+5)`"NC!"(!*!&e%F!C*!'!#15N!ErNT)M!'4NC!"(!*!&e%F +!C*!(!#15N!FM!'53"!"(!*!&e%F!C*!)!#15N!8M!'53"3"(!*!&e%F!C*!*!#1 +5NT)M!'53"J"(!*!&e%F!C*!+!#15)`"NN!F!4`#3"G4(!'53#`!M!'53#!"(!*! +&e%F!N"K(!*!&e%H3'J#3"G53'3#3*`)!N"S2rrrrm!#3#`rrrr$`!*!,$rrrrr! +!N!Nc!!,-c-)!N!N$Gc!Xc-c#!*!*0hGbc-c-)!#3"!-cN!4hGbc-c-`M-c!!!!- +!!!!hGh,-cmc-)!!`!!"M#lZcGhFXc-r-c#Z`-!!!B`Zl0hGk,-c2c-`VX$!!!'- +,XhGhHLc-cmc-+l!`!!"M#cGhGhSXc#r-c#Z`-!!!B`0hGhGk,-*r,-`VX$!!!'- +hGhGhHL,#Ibc#Fl!`!!"M!hGhGhSLc#,-`RF`-!!!B`!hGhGhSL`Xc#GhFc!!!'- +,!hGhGhSL,-*hGh-`!!"M#l!hGhGhUUmRGhF`-!!!B`Zl!hH3"+phGh-!-!!!B`Z +lX$GhGhGrGhF`X$!!!'-,ZlX$GhGhIhGc#l!`!!"M#lZlX$GhGhph-,Z`-!!!B`Z +lZlX$GhGhF`ZlX$!!!'-,ZlZlX$GhGc#lZl!`!!"M#lZ3"!0hF`ZlZl!`!!"M#lZ +3",!h-,ZlZl!`!!"M#lZ3"3-,ZlZlX$!!!'-!N!``!!"M-j!--!!!CT!-B!#3&3G +"8&"-!*!'&J"k!)S!f!(3!!%!N!R)!9J!!!!@!#B!(!$Z!9S!!3#3#B3"@!!!!"B +!*3!1!2X"@J!"!*!*JJ&B!!!!'3!Z!!B!M`%j!!3!N!J"-J4'D@jN!!!#B!!r!#F +!m!'R!!%!N!J,Z!#3"3B!QJ#GL0FJ8h4KEQ3J3@a[EQ8J4'pMG@ePER3J3h*PBA4 +[FJdJN!PhFQPdG'9Z)'*j)%eKFQXJ9f&XE!dJN!fT-6Ni0L!Y)$%j16F0)%&XE#" +5D@GSG(-J8Q9cCA*fC@3J9fpbE'4hD@4P$3dJN!C(FQ9PEL"0Eh9ZG'&TEL"6EfC +dGf&bC3dJN!Bj0$!d)&CKE'aPH5"-B@jP$5#3"NKeER4cGQPXE'8X)%&-$5#3"M- +e1$!c,6%c-MBJN!498d%#!*!&#`#L!%X"GiME4%p$6@&VCA)JDA-JB5"cD'&bCAG +KFQ8JF'&MDf&RC5"QEh)JBh*PBA4TEQFJFh4KEQ3YB@a[EQ8JC'pMG@ePER4c)'C +[FL"MEfe`GA4PFR-JFR9ZEQPZCb"eEQ4PFL"0B@028kSZ)#"8D'8JC'pMG@ePER3 +JH@pe)'&bC5"bC@&ND@jR)(GKFb"MFQ9KG'9N)(GTG'JJ4%p$6@&VCA)Z)#"$Efj +dB@0d)%GbC@9Z)%e[G@jdB@PZ)&0[CR4hBA*P)'C[FL"XD@0PER0TEQFJD@jQEh* +YBA4TEfiZ!J#3"8m!SJ#S!AZ)@N&26$SJ)%e69d&-6!eRFQ9PEQedEN"SFhBZG'P +c,QjPG!eSG(4`1Lm[GhGh,QKcGLjdDA-ZEQ9d,hjRFQ9PEQedELm0GQpTBf8[4N& +B)$)`05ii1$-Z-$-h-`#3"Ci!"J#X!&Q)#(Bd,MFZ-Q3e!!!!6!!#!*!!+!"N +"3)J#AM!!N!8J!!S!3!&!L!*H-3#3"88!6J"A!3D)(&"bCA0c)#J4)#"`CA*TEf3 +T)(4[)'0KEQ0PE#i!!!#b!!F!N!@[!28!``%`"!*25`#3"Dm!V3$$!1J%"N0KEQ0 +PE!#3"Dm!9`$$!+!%#9"bD@jd)%&XE%m!N!8H!!S!-J"Q"!T6C@aPBh3J3@aX!*! +&03!*!+J"-!#3"ai!E!!b!5@)#90PE'9MG'9N1J%!N!8&!!S!&`%QL"P6C@aPBh3 +J3fKKF(4PFR-J9'mJ8(*TER6*l3#3"4N!#J!E!6#%!*!%[J!#!*!!&!#N!*D! +#!)!!N!93!$)!dJ&*!*!("J!X!%J"4SL3!&4SDA-JC'pMG@ePER3JGf&c)'0bC@& +dC@3JGA0TEQFJCQpZG(-JGfKTBfJJBA*P)'j[G#"KGQ&TE'&LE'8JEfiJG'KTFb" +0B@0TER4[FfJZ$8&XG'9bEQ&dC5"QEfjdFb"hD@aX)'*P)(9cC@3JD@iJF'aKBf8 +JEfBJG'KP)'C[ER4c)'aTFh4PC#"SCA*P1J!!!))!"3#3"8%!#J"9!%X%"%CTEQ3 +!N!9"!&m!93#J"!4%EfjP!*!&#J!Y!"S"*a!!N!BM!!S!03"V"3T0BA4MD#"$BA0 +P!*!&)`"Z!$8""3868f9KFQ0S)%&XE#"$D'&`G'9bF`#3"JS!#J!E!#U)"8CTEQ3 +k!*!%+!!"!*!&@!%3!'`"5`3#6dX!N!8(!%S!5`&,L!KH-&iaAM*H-`!!!P`!"!# +3"3B!'3!M!)V!!J#!!*!&+!!)!*S!RiMA)&0dB@jN)%&XEfjP)%4[Bh9YC@jd)%0 +bC@&dEh)0)*!*Gh*TG(4PEL"LH5"0BA*V)&GKE'`0)*!0U6%j1$BJ,5!a16Ni$5" +"E'`J8QPRD(4c)&*PFf9bGQ9N)&G[FQaNGfPNC3d0)*!'4h*PC@iJ6@peER4KD@i +J8fpQG(GKFQ80)*!'163`0#"@B@aXCANJ6'&ZC3dJN!C)G@jdFhCTE'aP,#""6!d +JN!Bc06J`-bda-c)f)*!%990"!J#3"3X!SJ",!AH)fN423deKDf9b)'Pc)'%JFfp +QG(GKFQ8JF'&MDf&RC5"QEh)JBh*PBA4TEQFJFh4KEQ3YB@a[EQ8JC'pMG@ePER4 +c)'C[FL"MEfe`GA4PFR-JFR9ZEQPZCb"eEQ4PFL"0B@028kSZ)#"8D'8JC'pMG@e +PER3JH@pe)'&bC5"bC@&ND@jR)(GKFb"MFQ9KG'9N)(GTG'JJ4%p$6@&VCA)Z)#" +$EfjdB@0d)%GbC@9Z)%e[G@jdB@PZ)&0[CR4hBA*P)'C[FL"XD@0PER0TEQFJD@j +QEh*YBA4TEfiZ!*!&6`#L!+J"HiKD38p-1L!J690A38a-$@GbC@9ZEA4Z3'KcGLj +dDA-ZEQ9d$@KdG(!k,bphGhFZD(0f,R4TFbjZCA3[IQGbC@9ZEA4Z,`efEfPMC5p +'39JJ-M8f,MJi-bi`-cFc!*!&RJ!'!+`!@BJ'GM3Z1#id!!!!'2rr!Ed"(3(0!*! +%!C!!!!!!%!#3"!&i!!!!'!"N!$)!I3"e!!%!!!!+!!%"i!#3"!&K!!!!(%4V3&! +!!!!"4P*&4J#3"B"*3diM!*!&J!!!!!`!,J"!!+3"P3#"998!!!&N!@3!N!83!"! +!%3,r$!$rN!3!N!N3!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P +)!!!!5!#3"3J!!3!)!*!&k@!d!*!'&0B!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B +!r`#3#a!!%!#3"4!!%!!!![(r"`$rp!!"![m)!Im!p3%"![m,![m!!IJ$!`%"![m +2"Im!!3-#!2`#"!-"!3,r#`,r!!(i!`-"!3,r$`2r!!%$r!!'!J)$!3%#r`i%r`! +"!`$l!J3$!3%#r`m$r`!"!r`!"J)#!`%"![m1"2m!!3-!q`)%!`%"![m2!rm!!32 +m!!B#!J-"!3,r#`,r!!(i!`-"!3,r#!(r!28"!3,r#!(r!28"!3,r"J$rm`)!r`, +ar`#J!)-!r`!!!AS"HJ#3"4!!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3! ++!*!&%!!3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J!N!ATCD`!N!B9Y!!!!!3 +!!2q3"J!"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!&%!!3!!!#mIm(!2rd!!%#r`J +"r`$e!3%#ra!%r`!"!!2p!3%!!ri"!3,r%36r!!%!!ri"!J!$!ri"!3,r%!Ir!!% +!!`%"!2i$rJ%"![m2"[m!!3!$!3$p!ri"!3,r$JAr!!%!!`$m!ri"!3,r$`Er!!% +!!`%!r32q!3%#ra!(r`!"!!-"!3$q!ri"!3,r%36r!!%!!ri"!J!$!ri"!3,r%!6 +r!!%!!rd"!3!$rJ%"![m)!Im!p3%"![m)!Im!p3%"![m'!2rc!J$r![(r!!#J!)- +!r`!!!@B"CJ#3"4!!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!! +3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J!N!ATD"!!N!B@5!!!!!3!!2q3"J! +"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!&%!!3!!!#mIm(!2rd!!%#r`J"r`$e!3% +#r`d"r`$l!3%!!rd"!3,r$J(r!2`"!J!$!rd"!3,r$J(r!2d"!!$q!rd"!3,r$J( +r!2i"!!$p!rd"!3,r$36r!!%"!2`$r3%"![m1!Im!rJ%!!2d$r3%"![m1!Im!r3% +!!2i$r3%"![m1!Im!r!%#!!-$r3%"![m0!Im!q`%"!!2p!3%#r`J"r`$e!3%#r`J +"r`$e!3%#r`B!rr-#!2m#mIm!S!#$!2m!!!&H!9i!N!83!"!!%3,r$!$rN!3!N!N +3!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P)!!!!5!#3"3J!!3! +)!*!&k@(d!*!'&iF!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B!r`#3#a!!%!#3"4! +!%!!!![(r"`$rp!!"![m)!Im!p3%"![m-"Im!!3%!!rN"!3,r$3Er!!%"!!-$qJ% +"![m0"2m!!3%!rJ2l!3%#r`d%r`!"!3$p!r`"!3,r$36r!!%"!2`$r3%"![m0"2m +!!3%!r32m!3%#r`d%r`!"!3$q!rX"!3,r$3Er!!%"!!-$qJ%"![m-"Im!!3%!!rN +"!3,r#!(r!28"!3,r#!(r!28"!3,r"J$rm`)!r`,ar`#J!)-!r`!!!Ai"IJ#3"4! +!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!3!*L!%!#3"4!!%!# +3#8J!!!")!*!&#!!"!!J!N!ATCU3!N!BB2`!!!!3!!2q3"J!"hC!'!!*hN!B!!b+ +3"J$r!*!,%!!3!*!&%!!3!!!#mIm(!2rd!!%#r`J"r`$e!3%#ra!%r`!"!!2p!3% +!!ri"!3,r%3Ar!!%!!`2q!3%!!ri"!3,r%32r!!%!rJ-$!3%!!ri"!3,r%!2r!!% +!r3-#!3!$rJ%"![m2!rm!!3$m!`%!!ri"!3,r%!2r!!%!r3-#!3!$rJ%"![m4!rm +!!3$q!`-"!3!$rJ%"![m4"Im!!3!$!ri"!3!$rJ%"![m3"2m!!3!$r3%"!!2q!3% +#r`J"r`$e!3%#r`J"r`$e!3%#r`B!rr-#!2m#mIm!S!#$!2m!!!&Q!@B!N!81!"! +!%3,r$!$rN!3!N!N3!!!!$J#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!81!"!!N!P +)!!!!5!#3"3J!!3!)!*!&k@B8!*!''1m!!!!&!!$rN!B!!AH3"J!#)T!'!!1UN!B +!"1k3"J$r!*!,$J!3!*!&$J!3!!!'!!(c!!!#"`%"!23$!!)(!3%!p!-!!JF"!3$ +d!`!#%!%"!2i$"33#"!)%![d$!!)4#`%!!`-%!J)%!J3#![i$!!)4!`%!!`6q!J) +%!J6q!J)$!`)2!J%!"2d#!J3#"2d#!3-#%3-"!!-%rJ)#"!)%rJ)#!`-#%3X"!!- +$"!)#"!)%!J,q!`!#%!%"!2i$"33#"!)%![d$!!)(!3%!p!-!!JF"!3$d!`!#![% +#!+!!J`$r!!!!e!$8!*!&"3!*!"%#r``!rj!%!*!*#3!!!!8!N!HJ!))!(J!"!!S +!N!83!"!!Q)!+!*!&"3!*!*!*5!!!!%J!N!8)!!%!#!#3"HPN3!#3"KQY!!!!!`! +!rj!'!!(GN!B!!L+3"J$r!*!,"3!*!*!&"3!*!!!%q!)!!!F!!IS#!3%b#3%"!I` +#!J%""!Mq!Ii#rJ%!$!Mp!3!#r3%!r`!!S!#$!2m!!!$5!0)!!!!,!"!!$3!4![m +-!2q3"!!,!*!($3!!!"!!N!HJ!))!(J!"!!S!N!83!"!!N!#!!J!!!!X!%!!0!!! +!!3#3"8J!!!")!*!&#!!"!!J!N!ATD&J!N!BXE3!!!!3!!2q3"J!"hC!'!!*hN!B +!!b+3"J$r!*!*#`!3!!d!!!!,!"!!$3!!rrm!!!'3'!)#rrm!S!#$!2m!!!$b!2) +!N!83!!-!%3,r$!$rN!3!N!N$!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#3!)!%!*! +&%!!$!!!!!3#3"8J!!!")!*!&#!!"!!J!N!ATBEJ!N!BVB3!!!!3!!2q3"J!"hC! +'!!*hN!B!!b+3"J$r!*!,%!!$!*!&%!!$!!$rrrm"r`!!rrm!!AAr!!%!r`!"l2m +!!3Mr!!&Sr`!"92m!!36r!!%$r`!"8rm!!@Vr!!%Jr`!"8rm#!Qcrrrm(!+!!J`$ +r!!!!mJ$b!!!!$3!3!"!!%3,r$!$rN!3!$3#3"a!!!!!3!*!(S!##!"i!!3!+!*! +&%!!3!*!!J!3!!!!0!"!!%!!!!!%!N!9)!!!!5!#3"3J!!3!)!*!&k@GN!*!'+J) +!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B!r`#3#3d!%!!3!!!!$3!3!"!!!2rrr`% +!![rr!3,r9!%#r`!"![r8!3,rD3%#rfm"![p[!3,rE!%#r`!"![pT!3,rC3%#rf- +"![m!!J,r8[rrrh3!S!#$!2m!!!&L!@)!N!83!"!!%3,r$!$rN!3!N!N3!!!!%!# +3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P)!!!!5!#3"3J!!3!)!*!&k@J +m!*!'T'J!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B!r`#3#a!!%!#3"4!!%!!!![( +r"J$rm`)!r`F"r`,d!3$r"`(r![3"!2m,!rm#!3(i!`)"!Im2"[m#!3%$!J$m!J- +$!3(r#`2r!J%"q!-#!3(r$`6r!J%"!r`!"3)#!`%"r`i&r`)"!3-!q`)$!`%"r`m +%r`)"!32m!!8#!J-"!Im1"Im#!3%$!2X#!`-"!Im2"2m#!3%$r!!&!J)$!3(r#`2 +r!J%"q!-#!3(r"`(r![3"!2m(!Im#p!%!r`,ar`!!S!#$!2m!!!&f!AB!N!83!"! +!%3,r$!$rN!3!N!N3!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P +)!!!!5!#3"3J!!3!)!*!&k@CF!*!'PpF!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B +!r`#3#a!!%!#3"4!!%!!!![(r"J$rm`)!r`F"r`,d!3$r"`(r![3"!2m3"Im#!3% +!!rd"!3!$rJ%!ra%&r`)"!3!$rJ%#!!-$rJ%!ra!)r`)"!3!$!3%!rJ2q!3$r$`I +r!J%"!!-"!2d$rJ%!r`i'r`)"!3!$!2`$rJ%!r`m(r`)"!3!$!3$p!ri"!2m3#2m +#!3%!!`%"!2i$rJ%!ra%&r`)"!3!$rJ%#!!-$rJ%!ra!&r`)"!3!$r3%"!!2q!3$ +r"`(r![3"!2m(!Im#p!%!r`,ar`#J!)-!r`!!!9`"A!#3"4!!%!!4![m-!2q3"!# +3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!! +"!!J!N!ATCM`!N!DP53!!!!3!!2q3"J!"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*! +&%!!3!!!#mIm'!2rc!J$r"`(r![3"!2m(!Im#p!%!r``"r`,k!3%!!rd"!2m0!Im +#q`%#!!-$r3%!r`d"r`,m!3!!rJ2p!3$r$3(r![d"!!$p!rd"!2m0!Im#rJ%!!2` +$r3%!r`d"r`,p!3!!r32p!3$r$3(r![`"!!$q!rd"!2m0!Im#q`%#!!-$r3%!r`` +"r`,k!3%!!rd"!2m(!Im#p!%!r`F"r`,d!3$r![(r!!#J!)-!r`!!!9`"A!#3"4! +!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!3!*L!%!#3"4!!%!# +3#8J!!!")!*!&#!!"!!J!N!ATBi!!N!DQ,!!!!!3!!2q3"J!"hC!'!!*hN!B!!b+ +3"J$r!*!,%!!3!*!&%!!3!!!#mIm'!2rc!J$r"`(r![3"!2m(!Im#p!%!r``"r`, +q!3%!!rN"!2m0!Im#rJ%#!!-$qJ%!r`d"r`,q!3!!rJ2l!3$r$3(r![i"!!$p!r` +"!2m0!Im#rJ%!!2`$r3%!r`d"r`,q!3!!r32m!3$r$3(r![i"!!$q!rX"!2m0!Im +#rJ%#!!-$qJ%!r``"r`,q!3%!!rN"!2m(!Im#p!%!r`F"r`,d!3$r![(r!!#J!)- +!r`!!!A`"I!#3"4!!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!! +3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J!N!ATAY`!N!DQaJ!!!!3!!2q3"J! +"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!&%!!3!!!#mIm'!2rc!J$r"`(r![3"!2m +(!Im#p!%!ra!&r`)"!3!$r3%"!!2q!3$r%3Er!J%"!!-$rJ%"!!2q!3$r%36r!J% +"!2i$!`%"!!2q!3$r%!6r!J%"!2d$!J%!!ri"!2m2"2m#!3%!r!-"!!2q!3$r%!6 +r!J%"!2d$!J%!!ri"!2m4"2m#!3%!rJ-$!3%!!ri"!2m4"[m#!3%!!`2q!3%!!ri +"!2m3"Im#!3%!!rd"!3!$rJ%!r`F"r`,d!3$r"`(r![3"!2m#mIm!!+!!J`$r!!! +28!p3!*!&%!#*!"%#r``!rj!%!*!*L3!!!"!!N!FH!!%!#J#3"4!!L3#BJ*!!!13 +!b3$d!9N!N!P)!!!!5!#3"3J!!3!)!*!')4!!N!F)J!!!r`J!rj!'#!$rN!6-c!J +!rj!%QCN)!2q3"'CQ#!$rN!3c-`J!rj!%!!!)!2rrc-crr`J!rrr-N!3)!2rrc-b +CQ3J!rrr-c'CQ#!$rrmc--c-)!2rrc-`!!!J!rrqCQIrr#!$rrjQCc-`)!2rrQC! +%#!$rrjQCCQB)!2rrQCNc-`J!rrqCQ3!!#!$rrfCQrrm)!2rrCQE-c!J!rrpQCTQ +C#!$rrfD3"!J!rrpQCM-c#!$rrfCQ!!!)!2rr-c2rr`J!rrmc-mc-#!$rrc-cQCN +)!2rr-c0QCJJ!rrmcN!3)!2rr-c-!!!J!rrm!!2rr#!$rr`!!c-`)!2rr!!#CQ3J +!rrm!!'CQ#!$rr`!!-c-)!2rr!*!%#!$-c2q3"!J!c-crrmc-#!$-c2rrQCN)!-c +-rrpQCJJ!c-crrc-c#!$-c2rr!!!)!-b3"2rr#!$-N!B)!-b3"*QC#!$-N!4QCJJ +!c*!%-c-)!-b3"!!!#!$-c*QCrrm)!-c-QCR-c!J!c-bCN!3)!-c-QCPQCJJ!c-b +CQ6-c#!$-c*QC!!!)!-c-CQErr`J!c-aQCXc-#!$-c'CQQCN)!-c-CT!%#!$-c'C +Q-c-)!-c-CQB!!!J!c-`c-rrr#!$-c$-cc-`)!-c--c1CQ3J!c-`c-fCQ#!$-c$1 +3"!J!c-`c-`!!#!$-c!!!rrm)!-c-!!$-c!J!c-`!!*QC#!$-c!!!CQB)!-c-!!! +c-`J!c-`!N!3)!*QCrj!%#!#CQIrrc-`)!*QCrrqCQ3J!QCRrrfCQ#!#CQIrr-c- +)!*QCrrm!!!J!QCR-c2rr#!#CQFb3"!J!QCR-c*QC#!#CQFc-CQB)!*QCc-`c-`J +!QCR-c!!!#!#CN!6rr`J!QC!%c-`)!*Q3"JJ!QC!%CQB)!*Q3"$-c#!#CN!3!!!J +!QCPQC[rr#!#CQ@CQc-`)!*QCCQDCQ3J!QCPQN!3)!*QCCQBc-`J!QCPQCJ!!#!# +CQ6-crrm)!*QC-c2-c!J!QCNc-jQC#!#CQ6-cCQB)!*QC-j!%#!#CQ6-c!!!)!*Q +C!!$rr`J!QCN!!-c-#!#CQ3!!QCN)!*QC!!"QCJJ!QCN!!$-c#!#CQ3#3"!J!CQE +rN!3)!'CQrrr-c!J!CQErrjQC#!"QC[rrCQB)!'CQrrmc-`J!CQErr`!!#!"QCXc +-rrm)!'CQc*!%#!"QCXc-QCN)!'CQc-aQCJJ!CQE-c$-c#!"QCXc-!!!)!'CQQCR +rr`J!CQDCQFc-#!"QCTQ3"!J!CQDCQ@CQ#!"QCTQC-c-)!'CQQCN!!!J!CT!%rrm +)!'D3"-c-#!"QN!5CQ3J!CT!'#!"QN!3c-`J!CT!%!!!)!'CQ-c2rr`J!CQBc-mc +-#!"QCM-cQCN)!'CQ-c0QCJJ!CQBcN!3)!'CQ-c-!!!J!CQB!!2rr#!"QCJ!!c-` +)!'CQ!!#CQ3J!CQB!!'CQ#!"QCJ!!-c-)!'CQ!*!%#!!c-rq3"!J!-c2rrmc-#!! +c-rrrQCN)!$-crrpQCJJ!-c2rrc-c#!!c-rrr!!!)!$-cc-crr`J!-c2-N!3)!$- +cc-bCQ3J!-c2-c'CQ#!!c-mc--c-)!$-cc-`!!!J!-c1CQIrr#!!c-jQCc-`)!$- +cQC!%#!!c-jQCCQB)!$-cQCNc-`J!-c1CQ3!!#!!c-fCQrrm)!$-cCQE-c!J!-c0 +QCTQC#!!c-fD3"!J!-c0QCM-c#!!c-fCQ!!!)!$13"2rr#!!cN!6-c!J!-j!%QCN +)!$13"'CQ#!!cN!B)!$13"!!!#!!c-`!!rrm)!$-c!!$-c!J!-c-!!*QC#!!c-`! +!CQB)!$-c!!!c-`J!-c-!N!3)!!!!rj!%#!!!!2rrc-`)!!!!rrqCQ3J!!!$rrfC +Q#!!!!2rr-c-)!!!!rrm!!!J!!!$-c2rr#!!!!-b3"!J!!!$-c*QC#!!!!-c-CQB +)!!!!c-`c-`J!!!$-c!!!#!!!!*QCrrm)!!!!QCR-c!J!!!#CN!3)!!!!QCPQCJJ +!!!#CQ6-c#!!!!*QC!!!)!!!!CQErr`J!!!"QCXc-#!!!!'CQQCN)!!!!CT!%#!! +!!'CQ-c-)!!!!CQB!!!J!!!!c-rrr#!!!!$-cc-`)!!!!-c1CQ3J!!!!c-fCQ#!! +!!$13"!J!!!!c-`!!#!#3"Irr#!#3"Fc-#!#3"CQC#!#3"@CQ#!#3"6-c#!$ZlJ# +3"!J!hGd!N!3)!,Zl!*!%#!#UUJ#3"!J!L)J!N!3)!(Gh!*!%#!"993#3"!J!4%3 +!N!3)!#)L!*!%#!!4%3#3"!J!!!$ZlJ!!#!!!!0hG!!!)!!!!ZlX!!!J!!!#UUJ! +!#!!!!)L)!!!)!!!!GhF!!!J!!!"993!!#!!!!%4%!!!)!!!!)L)!!!J!!!!4%3! +!#!#3"HlZ#!#3"GhG#!#3"EZl#!#3"DUU#!#3"BL)#!#3"AGh#!#3"999#!#3"84 +%#!#3"5)L#!#3"4%4#!$ZN!B)!0f3"JJ!Zj!'#!#UN!B)!)L3"JJ!Gj!'#!"9N!B +)!%53"JJ!)T!'#!!4N!B)!*!)j!$*!23"8J#3"4!!L3!!"S(rq2rk!!X!ri%!q`! +"q[rk!)err`!!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J)!2J!q!$i!2V +rqJ#0Irm!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!#2d!r3$p!2hkrrS +!MArr!!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!J!q!$i!2J!q[rk!)e +rr`$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3!)r3$p!2d!rIVrqJ#0Irm +!!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i#!$i!2J!q!$krrS!MArr!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!!Mp!2d!r3$pq[rk!)err`!!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J)!2J!q!$i!2VrqJ#0Irm!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!#2d!r3$p!2hkrrS!MArr!!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!J!q!$i!2J!q[rk!)err`$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3!)r3$p!2d!rIVrqJ#0Irm!!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$ +i!2J!q!$i!2J!q!$i!2J!q!$i#!$i!2J!q!$krrS!MArr!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d +!r3$p!2d!r3$p!2d!r3$p!!Mp!2d!r3$pq[rk!!S!ri(kq[S!rrS!"S(rq2rk!!! +!r`!!!B`"M!#3"4!!%!!4![m-!2rq!4N!5!!!!%J!N!F3!"!a!!(e!"i!!3!+!*! +&%!!3!*Q!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!3"'6AS!*!'6l-!!!!2!!$ +rN!B!!Hk3"J!#hC!'!!2-N!B!",Z3"J!&UT!'!!DCN!B!"iL3"J!)Gj!'!!PQN!B +!#P@3"J!,4*!'!!`cN!B!$5+3"J!1%C!'!!m!N!X3!"!!N!83!"!!3!!+!*!&%!! +3![Rr"J$`q`!!M`B!m2XL!)m)!2$p)J,GdSm)!2$p)J,GdSm)!2$p)J,GdSm*"r! +L)Y)LhG+2#3I`)Lh5)Yh5M`J"m#,ph3(5M`J"m#hph3(5M`J"m#,ph3%LM`N$m#) +Yd[iL!)m*!r!L)Y,q)J#2"J$`qb)!M`B!q2Z)!)m#qIm!r`!!!B`"M!#3"4!!%!! +4![m-!2rq!4N!5!!!!%J!N!F3!"!a!!(e!"i!!3!+!*!&%!!3!*Q!#!#3"4!!%!# +3#8J!!!")!*!&"!!"!!3!N!3"'6@-!*!'8-UV!!!2!!$rN!B!!Hk3"J!#hC!'!!2 +-N!B!",Z3"J!&UT!'!!DCN!B!"iL3"J!)Gj!'!!PQN!B!#P@3"J!,4*!'!!`cN!B +!$5+3"J!1%C!'!!m!N!X3!"!!N!83!"!!3!!+!*!&%!!3![Rr"J$iqiJ!M`B!q2X +L!#m'!2Ml)J![#!$ir5)#,Gd[#!$ir5)#,Gd[#!$ir5)#,Gd[#3Ii)L)Y)LhG,`N +(q#)Lh5)Yh5m)![JL,IhG!#m(!IJLr0d!,`N#q#)YrYd"dLm*!rJL)Yhq)J![#32 +i)L)YrL)!,`B!q2XL!#m#qIm!r`!!")i"!*!'!Jj5CA&eDA*PC#"6G@PdC64&GQ9 +ZG(-JG'KKG#"PGQ9bH5""45"KGf&bC5"KF("XD@0KG'P[EL"YGA0d)(0eF("[FR3 +ZFQ9aC!!"!!%!N!J88h4KEQ3J3@a[EQ8J4'pMG@ePER3cU6%j168J4h*PC@iJ6@p +eER4KD@iJ8fpQG(GKFQ8X)%&XE#"5D@GSG(-J8Q9cCA*fC@3Z!'4MB@8!!3!"!!B +'C'p'D@jN9QCTEQ3JFh4bD@jR)'PZ)'4[Bh9YC@jd,#"TCL"QEh9ZC#"YEhCP)'4 +[Bh9YC@jd)(4[)(4SBA3JE'pMBA4TEfiJB@jN)'KTE'PdC5"QEh9ZC#"dCAKdC'0 +KC@4QEQ4#6dp-'RGKFb"cG(*TEQFJB@0dG@&XE(NJCQpeEQ3r4J!!ER9XE!!p!!! +!!`TQD@jN8h4bD@jR2@CcG(*849K8&&4PH(3JFh4bD@jR)(4[)'CTEQ3Z)!!!#@e +KG'0S3f&cC@eMFf9#6dp-&feKG'0S)'0KFf8J+&4bG@8[4Q&XFf8T%!!)B@aX3fK +KF(03B@aXBd*26d`JFf9KFQ0S)'&XE#"MD'&`G'9bFb!S9(*eC5p'B@acC5Np!!! +0CfmJG'mJBfKKF(4PFM9%Ef0eE@9ZG#"hD@aX)'G[)(4[)(4SC5"dEh!JEfBJG'K +P)(0`C@0TCQPPC#"MD'&`G'9b,Q4MB@9RBfK`ER9XE!!p!!"XEfjR,94SC5"MD'& +`G'9b)(4[)'G[)(4[,L"E-5iZER9YBQ9b)'pQ)'0SBA"dCA*cA3#3"!jREb"dEb" +MEfjdC@jdFeC%DA0`E'&j)(4SC5"`BA*d)'pQ)(4SC5"NEf0eE@9ZG#"bC@CPFR* +PC#"dEb"LH5"dD'8JFh"PBfPQD@9N)&4KBQaP)'pQ)%0[ER4PER4c)'PZC'9i,Q4 +MB@9RBfjdER9XE!!p!!"XEfjR394SC5"dB@*XC5"[CL"MEfjdC@jdFb"TG'9Y)(4 +[)'4TFh"XBANZ)&Xa,LjZG@eLCA)JEfBJ9%p$)'9ZG(*TCA0G!*!%%QjeE@*PFL" +[CL"MD'&`G'9bFcY5CA4eFQjc)(4SC5"ZG@eLCA)JEfBJBfKKF(4PFR-JD@iJG'K +P)(0dB@jN)'&XEfjP)'4[Bh9YC@jd,Q9NBf&PEQ0SF'a[EQFA9'KP)'jeE@*PFL" +[CL"MD'&`G'9bFbi!!'jeE'`!N!B5ER9YBQ9b)'pQ)'0[ER4PER4c0e*PG(9bER- +JG'KP)'jeE@*PFL"[CL"PER4bD@9c)'PZ)(4SC5"8B@*XC5"[CL"$EfjdC@jdFbj +TC'0KC@jMER4XEfjR(e4SC5"ZG@eLCA)JEfBJBfpZG'9ZG(-JC@jdFQPPFbi!!'j +eE'`!N!B)Ff0bEfaX9'mX8f0bEfaX)(4[)(4[F#"[CL"cF'9MD@CTC@3JF'&bB@G +bBA"S)'jeE@*PFLjNBf&PFf0bE'jeE'`!23!!E'pZCaYcBh*[E'`JC'phEL"fB@a +eC5"ED@jdC@GPFPd!N!d`!*!("!!!rj!'!!%!N!F#!*!(!`#3"`6rN!B!!!!8!*! +A)b+T-6Ni0Lda16Ni)%GbC@9Z)%e[G@jdB@PZ)&0[CR4hBA*P!!!!MJC(C@jPGQ% +!N$S*!*!("!!%!*!&"3!*!*!,"J#3#`B!N!X'!*!,"J#3$"Dd!!!!!Ch1@Bm[2%0 +24%9#CkQJ)"GR!!$b)%!J8#iB,"#TSh!!)%f4aQ!#%-#ac@hk3Hd!+%2eH!"J!K$ +!XFPYqPQ2,ca%394"3QHTS#"A)!KR!!#f,`dJ8%KS!!41ZJ#`8)p$q[qF+dQ,RL* +06VS#'#*YLjj1ZJ)3UD01ZJ+@3Lf,Sc!mU*qR4Lm)-$bKQ+0'XGpR#KYm!!',Sh! +"SCJ`2+R`TdBV5)ZD-$bTmDG'+dL,PM!mUI5R4LY)Lj)`2+R`3IS#D+C(-$bTm8( +k!b5Q4c!mUI4"qJ!ZTNG1Z3!!")K1Z3!!"L4)HJ!L5LhrrfF#3QG#Cdkj!!!@"Pb +23UG1Z3!!")T1ZJ1-UI3!N!4)ja``@8mQE`!FH!"J!!$N(TXI@`!"(eX!!KpE!!- +NE`!JeGF@'dL$-!-#3!#!C`i#3`"r&0Y63dT$E2KJjM!$!N!!3'F1-!-#3!!r8N" +)`0A!B0!`!`*!!#"R#J*$!"p53aSEB!i`!`*!!""R%!*$!!pkra6&8d0+3fciB+B +`!`a!!!4LC0"!-$X!"Nll!!)!B!!+!"`!,!"#@)S8r2rr&2crra6E&0YJ!2pk@)S +8r2rr&0X8fa6EB!$rDK6mrkN8r2r`9)S8fa6E8SS8ff!!re38r2qT&2crm&++&0X +8fa6E8SS8ff!!rc`r2!!2UFP54!a%!!0Y!2mB)%YB6dcI$$K1G5m&@8mLE`!-(TN +I@3!"(eN!!KpC!!-U&h3!B%`5'4!"!N!!J'F-dJ%3!8L!5-$8J'!S(S%I@3!"%!% +#3!"!C```&q9)iN")`05!B!iI@3!#(eN!!b3AjBVLJL"[!"!J,`!8dE!S!&1&5S9 +ZX#"*@%mU(dje,`SN55m0,`S[#%kkri![,BZH,`S[#%kkrh3[#Lm+,`K1Z[pU6qm +!*#4I6R8[#L4*,`e%Pbm+,`K1Z[p5,bf,RN5A,`S[#%kkrd3[#N5A,`S[#%kkrcK +2l`!N*&p1GE[k!#KQ!Nje51F!K#Tk!"`JEBZD5Qm!$'B%)'f,PLp)!!T-hb%!9%p +1G3#3"%(krrSJM8je3rN!!!3B`2`!%#1)#2"1G6mm!!&1Z[qd9%p)jq$J9Dm!'#4 +[!"JJ,BZNC`SJ3$mU!!C1N!"8Me$i#PjCMbmm3dp%46mU!!DTS#!ACKBJ,BZ`CJ4 +`$kR*)%!r+J!'6T!!9)pJfNSi#l*R"#"!S'3J9k!T)&mJ8#!)S&8J3#m)-#S!"Nk +krhiL50(S!!K1Z[lJ)&mL6G2S!!3`+!!#)JKJ$$0m6[N!!01T!!*3L9()rr*+,BZ +MC`4`!D'B)#f,U'F+)%!r+J!'6T!!9)p-h`F(5MJ",@F#UIp1G6mm!!"1Z[lZ9%m +[#L4[!!J-DNlj!!"QHJaU!!)!"QebNFJ`+J!'6VVr!PQ2,ca$6d4&2bS!"UQJ)"G +Q"&L2B&)J3#"3)NM4k!!)6VVqGL"A)&!L6G2S!!3`+!!#)JKJ$$0mUI!!!*1T!!* +3L9()rr)J9k!U)&qJ58SYLk0R"(!"SCJJ,BZXC`SJ3$mU!!C1N!"8Mb4I,Tp1G8j +e6VS!+URd6R8UH!N%-$bTp#"YLj+Q4c!mUI!JEBZDTNF`2+Ra)'f,PUC(6R8[#Q! +8+e+,Y$mmrrm[+J!))'S!"%k3!&a2*'f,Y#!+CZ3NAdje51F`!(3#6[XL!'!+6!% +!!%cI!!a1G53!5%,%`5B"5%2'`04$5%*#3X$"d)*-h`!-6R9)jc!!G!*1qb)!B!T +-33!!60m!$%je*!NK#CK`f!%*!5%"R"S$"0!")3M!$J-%d!#!#60m!$%je0!" +#3%K!5%)Q!A)2e),4J,#$C353!)05!P(*rr)J!NcI!!a1G8U!E!a%J%U"E""%J8l +krj4+J@d%6[VrM%5"6VVrKN5!6R9)jc!!G!*1qb)!B!a-33!")!&-h`!-6R8N!8* +#5%*Q($B!3N")3'F'J-%d!%K#-!1!`8*!5%"-h`!-6R8d!%*!5%")3LB"FJr8JY' +!X)0P!T!!Je(*rr4-h`!-6R9+J@`#4)&+J'd%6[VrQ%5!6VVrNN5!6R8JAb*)dYL +`@'`#6Y'`@'m#6Y%b',"BCJ63d%l39%K4bIrd6Y&1G9P2U53JAdjeKN42584-43! +!!%r[rr!JE`!83pFLf#,B)YJLf#![!!,KQ!+!!!!!re1!Ca!%J!!!!2PR!Q"F6VV +r`'"@F!(!V`!#5S"A`%3!'d#0UdSYMDYR&%kj!!!!q%SYMCTR0%kj!!!#!'!X@8q +T*#"IXHhmiQB)6VN!!!$`B"K+,BfDCa*C6kNN)&qalIM%CJC1Z3!!!IK2l`!3,Tp +1GBG"8eG*9%0)!!"2lrrX98p#CdK[!!JJAc!IS$"53"k!%"mZV`!1,eF!'%r[!"4 +1GBY(6%p#38a06e9643!!6qrrp(!m,d!!"%SYMDYQ#&P2U53JAbk),fm!"!!),fm +!#!!36qm!$%jeL%G&9&0-4893!!!!51F!1%r[rqiSE`!L@8qT*#"I*%K+,BfVCJ! +!l&92,`T1Z3!!!ZJ3(fB!!0`[#UKc@8qSf#"I*%K+,BfNC`KC6kMB)&mQ5%K[!#D +SF5m+,cb!!)!!,carrRrqU0j+,BfDC`aC6kNN)&qalIM%C`SJEIK`)&"+8'B15'f +-&UK4,`S[$+MFB(*+,BfNCf"96bm[!#K)E`!'5'm!&%kj!!!#5"!ICdK+,BfJC`j ++VIKdC`J[,IKdUKaJ##"Yq(J[%+K45'm!!NK[!!j1Z3!!![![E`!'!!i[E`!+!") +[#dK[!"+Shbm,,`bSh&K2B!a)EB`@U&%[#Lm-U0`[#UMC5Lf0T'F%,`ZSf8r[!"* +-ha`!)&p36dl3M%&%5P969%098P028J!!!%r[rqiJE`!D,e!!##pS!!3!$#"[!"i +ZN!![D!!%!!4#E`!32fm!%!!L6qm!%L"I6qm!$%l3LdK"6N4-48p"8&"-!!"2lrr +Z)'m!'Lp3!!J[D!!%!!`JE`!H,T!!,fJ!"!!%3Qm!%$p[!"!!)Nr[!")JAdr[!!a +1d)Y)38j%6%9%39"36!!!6qrrlL"[!"S[8!!),fJ!"!!-)'m!(Lk3!#pS!!3!"%* +[!"!rE`!3!#*2l`!5)&p2l`!-6Y#,5%&14%a&8%&38%`!!%r[rqiJE`!D,e!!##p +S!!3!$#"[!"iZN!![D!!%!!3EI!!"r1G#E`!32fm!%!!L6qm!%L"I6qm!$%l3LdK +"6N4-49&"8&"-!!"96b"[!!C)D2rd-$`#"+J@-"mr!&52,Tp1GBK$E'9KEP9`-3! +!!%T[!!KR'L"[!!3aE`!)rr)[,`!%6VVra#j[!!41qJ%8)&pF6dl3L%CKD@a&FR) +b!!!!,`02lrq`)'m!A#p3!!3[D!!%!!JJE`"J,e!!$#pS!!3!%%+[!%a"l`!8d2` +!+%MJ2cT96dK[!!i[,Ii8,bhq'%K[!&B`2!J5U"B`(cm!5'm!9NkkrhSJE`"-)&! +ZN!"96bm[!!+SDc!I0J!-E3!"Nj!!E`!!J,CYNijRH%T$Eh5fEC13!'jZ)'hmiNK +S!"#T+%SYMD9R##mYq)!r!kPM2`0#*dkj!!!#i%kj!!!#d%+R3UF[,ILBUG%[I$r +mc-`!2#pmc*!%!%!rI-c0!%4)E`!m2c`!!LmYq*J[,IL%6VN!!!+B6VN!!!*B)'h +miNKS!"#T+NK[!&41Z[k`3Qm!4Q!-6qrrV%([!"4-f&cm2fm!4J"N6qm!8#BI)&p +2l`!-6Y#-5%&14%a&4d0"8&"-!!!!98mJE`!'5'Mrq$!m!J5S&M!I2`"8MbkI6R@ +)3faPB@j9F$-!!!"+E`!)CaSJE`!%-@m!#2r',bm!"%kkrm3ZE`!%6[S!ZL"IA%p +1d)K'B@PX4A*b0!!!!%r[rlSJE`"1,e!!$LpS!!3!%L"[!&)ZN!![D!!%!!4#V`" +#5Lf0QQG`-#hib0"YNj!!5-![3!!)5Um!%QGF3Hm!&Y$m!#K)i$mk98m[,IiF5'm +!$NKi!!4)E`"--$`)*DJ@-"mr!%K[!%K1Z[pN3Hm!&Y$m!#K)i$mk98p)E`!3,bh +q)%K[!%J`2!B3U"B`(cm!5'm!5%kkrcK)E`"'6VVr#N*[!!aJ$%r[rlT"l`!@60K +Fr$p[!!`!9Nr[!%BJAdr[!!a1d)a)38j%6%916N&38%`!!!"96b"[!!C)D2ri-$` +#"+J@-"mr!&52,Tp1GBK$E'9KEP9`03!!!%T[!!KR'L"[!!3aE`!)rmB[,`!%6VV +ra#j[!!41qJ#Z)&pF6dl3L%CKD@a&FR)f!!!!6qrrZL"[!%i[8!!1,fJ!"!!5)'m +!8Lk3!#pS!!3!"%+[!%)`EC13!#p)!!K+V`!5Cea"l`!@d2`!+%MJ2cT96bmYrL4 +)E`!15(J!"%K[!%``2!JPU"B`(cm!5'm!5%kkrh""l`!@d2`!+%MJ2cT96dK[!"! +[,IiS5'm!5$!m"K#S&M!I2`")E`")6VVr4%K[!%C1Z[m@3Qm!$'!-6qrrZN([!"C +-f&cm2fm!$!"@6qm!4L"I6qm!$%l3M%K"6N4-48j$39"36!!!!&92)'m!"NKSrqJ +`2!)%U"B`(cm!9)mZRdjeL%0XC@&Z9A!h!!!!5Qm!#'FD)'m!"$&[!!Mqi#m[!!4 +1Z[r%,Qm!"%lk!6BJAea26Y#)4Q&TE%9bFMJ!!!")jaJ`6qrpXL"[!QBZN!![D!! +%!!3JE`*U,e!"$LpS!!3"%N+[!NT+,BfDC`!!k%([!4E3r!!S51!r1P925'm"%#m +YrL`[,Ii`5'm#9$!m#"+S&M!I2`")E`*J6VVrFL"[!NSJ8#J398m["+KV-"mf!%A +Yq,``+J!-d'f6N!#f3'i!!*4(l`&!-%-J#&1!jBJJ5N(S!"K+F!J#CKi`3b!)8i$ +PL#"+3HJ!'$9`#!!!$N*U!""#DJ!5B%4(l`&!5'm!#$"$)!K6J1@))%T"k!!B2c! +)!Nkj!!!"X%([!!a$l`&%F%!Lf&()rr`bf$96!!ieD`!#!"!eD`!%!"*B6cmU!!i +r+J!32bS!%Nkj!!!"U%kj!!!#d%K[!Pj1Z[k13Qm"2Q!-6qrpSN([!4C-f&cm2fm +"2J*Z6qm#6NcI$"JJAdr[!!a1d)a)38j%6%9(6N&38%`!!!"96b"[!!C)D2r`-$` +#"+J@-"mr!&52,Tp1GBK$E'9KEP9`13!!!%T[!!KR'L"[!!3aE`!)rqi[,`!%6VV +ra#j[!!41qJ%D)&pF6dl3L8CKD@a&FR)a-!!!51FB!%r[rl)JE`"H,e!!"#pS!!3 +!##"[!')[8!!3,fJ!"!!83Um!5N([!"c3r!!S51!r1P925'm!%LmYrM3[,Iii5'm +!9$!m#"+S&M!I2`")E`"B6VVrH#"[!%SJ8#J398m["+KV-"mf!%T$E3!!LP922`- +[,ILB6VN!!!0i-"mf!&P22`-[,ILB2c`!#+Jp,em!$#p[!!`!'&922`-[,ILB6VN +!!!0`-"mi!#mYq)4C6h!"d%4)`#m!F!(34%M!,`![,ILB2c`!#DJp)"m[3!!%98m +[,IL%U@!`(p"[!"a)`*!!V`!%9B!r!+PM6VN!!!*B6VN!!!,35'm!9NkkrUT#E`" +%B!a2lrqU3Hm!(%cBA2`rE`"%!'C2l`"160m!'#"I6qm!$%l3M%K"6N4-490$39" +36!!!!#m+6qrqj#4[!6!JE`%N,e!"%LpS!!3"&L"[!5J[8!%+,fJ!"!%1)'m",#p +3!3)[D!!%!3C)9bm[!3T1Z3!!!pK"l`!%@%p$lBb-)$`!!!%!SLiJE`%1)&!E8)f +-)'m"&L"3'e#0M4pm!!%"'dK[!4Y1Z3!!!BK1Z3!!!Y"96bm+-$`#"+J@-"mr!&5 +23US!"&92,bhq2%K[!5&)H!!",`S`2!JPU"B`(cm!9)p#E`%!2fm"!!%d6qm"(#4 +I)&p2l`!36Y#+4%p"48424NP14!!!!&92)'m!"NKSrrJ`2!)%U"B`(cm!9)p96b" +[!!C)D2qi-$`#"+J@-"mr!&5298mJE`!'5'Mr`$!m!J5S&M!I2`"8Me92)'m!"NK +SrmJ`2!)%U"B`(cm!9)mZRdjeL80XC@&Z9A!a-3!!5Qm!#'FD)'m!"$&[!!MrULm +[!!41Z[q#,Qm!"%lk!EBJAea26Y#*4Q&TE%9bFM%b!!"2lrqH)'m!DLp3!!i[D!! +%!")JE`"Z,T!!,fJ!"!!%3Um!AN+[!"j#V`!Q3Um!,N([!$,3r!!S51!r1P925'm +!!LmYrN![,Ij%5'm!D$!m#"+S&M!I2`")E`"N6VVrFN([!$,3r!!S51!r1P925'm +!A%K[!!i`2!3(U"B`(cm!5'm!C%kkrdT+,BfEC`!"#(!$X+m!#'B!!2j"l`!bd2` +!+%MJ2cT96dK[!&a)H!!",bhq5%K[!#4)E`!X-$`+#kJ@-"mr!%K[!'41Z[m%3Hm +!-Y$m!#K)i$mk98p)E`"F5(J!!LmYrNa)E`!N5'm!0$!m#JZS&M!I2`")E`"N6VV +qd%([!$,3r!!S51!r1P925'm!A%Ki!!-[,Ij35'm!*%K[!$``2!S,U"B`(cm!5'm +!C%kkrTa"l`!bd2`!+%MJ2cT96dK[!&a)E`!J5'm!,%K[!$K1Z[e!-"mr!%K[!'4 +1Z[jZ5Um!%QFX3Hm!-Y$m!#K)i$mk98p)E`!3,bhq9%K[!'3`2!B3U"B`(cm!5'm +!C%kkrMa)E`"L6VVpc%*[!!aJ$%r[rjj"l`!b60KFr$p[!!`!FNr[!')JAdr[!!a +1d)a)38j%6%9%4N&38%`!!!")ja!J6qrrl&P2U0JJAb4)5Lf0SQF!!4T96bmYrPJ +[,IjF5(VdJN+R3LF`2!NIU"B`(cB!98m[,IjJ,bhqC%Kkp5a#Td)R-$`*(kJ@-"m +f!&92,bhqD#mYrQa)H[5-3UG#*c!m#4qS&M!I0J"96bmYrR![,Ijd5(VdXN+R3LF +`2!NIU"B`(cB!98m[,Iji,bhqI%KkpAK#Td)R-$`*(kJ@-"mf!&92,bhqJ#mYrS4 +)H[N`3UG#*c!m#4qS&M!I0J"96bmYrSJ[,Ik-5(Vfb%+R3LF`2!NIU"B`(cB!98m +[,Ik3!#mYrT4)H[IB3UG#*c!m#4qS&M!I0J"96bmYrTJ[,IkF5(VkL%+R3LF`2!N +IU"B`(cB!98m[,IkJ,bhqT%Kkr4"#Td)R-$`*(kJ@-"mf!%SYMDaR,PP26VVahLk +I,aF[#NkkmMj96cmmrrp)E`!)@8p1Z[(i)"m[!#m+U'!3(aB!B"+TY&922ccrrdK +[!!LTF"!I&J"+!fF!!+`[,`!1,`T1Z[(q-#m!"%kj!!!'!!#D!!%!&`!'!!%!'J! +$!#i!"3!H!!B!8J!)!#i!$`"@!"F!A%K[!!41Z3!!!3KJDNK[!!41Z3!!!4"JANK +[!!41Z3!!!4"J8NK[!!4`!$![!"B#J!!!!!&+J&E!4!!I!%kj!!!"''!b5'm!"%k +j!!!")'!Q5'm!"%kkm(4J(%kj!!!#f&925'm!"M!m!KZS&M!I0J"J"%kkm%4+,Ic +RC`$r!%r[!"4-h`3)6R@068&*6N9@48j86%p28!!!6Ud!++"MS$DJ0U!fS$DJ0U! +f5'f-JUKZU2kT%UN`UFa)H!!!UAX[2!!!rrmJ(k!b6Ud!-%kY!%K1V3"!6Ud!1%U +YMDjR(#mmb!!!!+Mp,bf0VLmm)!3%J+Mp,cc3!!!!U2e)E3!SUI&1Z[e+,bhmiUN +@98mr,C(i,bhqU%*R5'hqV"mm!!&1Z3!!"!J3(fF'6VN!!!&J5Lf0QQF),bhid#" +IS#01GB4YB@PZ!*!&"5S!!!6`rrrp'T*cF(4YFfjN)!&K4%a24`&KGQ9b)(1jHA0 +fCACZG(&dD@eaC(*hC(*KCf0bFh*$99*63dp%43a6C@GYC@jd8fpeEQ3!!FS"!&G +ZC'piG()bCL"[S(3)6Np$99086dd!!h"[F!%JBfjdF'0ZG#0c9(G%!@%"B8q!q%' +"!IK"K!(m!,`"%eZ'm!!B'P&955"8J9*")%k!95"-L8C14%G'58j%6P8J6)*2993 +J8+T56P4338G&3dj86!4MD'&`!(0`G'd"BA*44%B(3dK*3d&(6`%J!3e%8PC5)Lf +(E'pZCfa[EQFL,B0XEfjR*Lf$E'pZCb)YK'a[EQGL)'q!E#)YL'aTFh4849K8BL" +[J@aL)'q!E#)YK@&PGR4[B5"`rf&PGR4aG@PdB@9fG'pNEf0KCACdF'4[Bf4MB@9 +RBfK`C'0KC@GMER4NBf&PEQ0ZG'4MB@9ZBfK`C'0KCA0MFQaNBf&PC'CZC%024%8 +-8f9RE@9ZG&0[G@jN!#!)!3e35808!5!")'0XGA4849K8!@&849K8Fh4jE!&KFh4 +jE&GZNf4[F%PZCR"*EQC35808!5!")!%JAB)J#!)J)%#!!L!J3)!#)#"!J!)J)%# +!!L!J3)!#)#"!MJ%J!5!#,#!!!5!"$3!"!b%JK3%J!3d"$9f#)!K0)'q"9NdJEj0 +@4'Y!8!)[9`!",3*K,`!"B94&@#"8Ld9B9(0ZC#"*3dp135"3J8a")&#%6%4V3&! +JG)aiG&4&@&4%Dfe59%9B)&5"49JJ9)P&@&4cG(PX"d0))%qA8d95!@&cBh"dFf0 +`G'pcB5"cBh"d9%9B)&5%49K8ER8JE)&ZG5"XJ@je)'b$FfPREL)YK&4&@&4P)(+ +%EQa[EQFL,B0XEfjR33#3"#J!N!3S!`!-%!-!S"!$"b33!aAb%!-BJK!$!!`2!`! +S$`-!3!m$!)!2!`#H$`-!iJm$!4J2!`%i$`-"@!m$!CB2!`'k$`-"c!m$!H)2!`) +%$`-%'Jm$#iS2!`Zf$`--(!m$$8`2!`hQ$`-!$!d$!+J0!`kd$3-2)Jd$&P)0!aK +J$3-Bm!d$!)!-!`$N#`-"VJS$!J)+!`!-#3-!+!N$!%`*!`"m#3-!Q!N$!13*!`* +)#3-%$JJ$"p!)!`!-"`-"$!F$#$J'!`!-"3-"AJ8$!rJ&!`3k"3-&'J8$"E)&!`C +1"3-'T!8$#&S&!`YH"3-08J8$$BJ&!`h8"3-'+J3$%#S%!`!-!`-!SJ-$"&i$!`8 +N!`-(-J-$"r3$!`N@!`-+XJ-$#ji$!`c!!`-0)J-$$Ci$!`jX!`-1L!-$$fJ$!`q +f!`-3rJ-$%K3$!a--!`-81J-$&0J$!aA3!`-@CJ-$'3i$!aT#!`-!$!)$!%3#!`# +k!J-"$!)$!eB#!`4@!J-'0!)$"V)#!`Fd!J-(H!)$"m3#!`J1!J-)8!)$#+3#!`N +b!J-+A!)$#Xi#!`X)!J-,F!)$$$J#!`e8!J-0V!)$$L!#!`j)!J-1F!)$$UB#!`l +'!J-21!)$$i!#!`r)!J-3&J)$%+3#!a'#!J-5"!)$%Z)#!a0`!J-6i!)$&'`#4B% +@Y%f"&3C0J5,D6B%AQNf"$Xj0J3R16B%"B%f"#%C0J3+U6B%$Z%f"!ZK0J3)%6B% +C6Nk!!8f"$RC0J4T-9`#3#!&#$!#3"aj"MN'cKSU03&'pPd%aJjZ$3H+EJd#,PD@ +$3%#EJd)rM2U@KSP!BS8!!!!&3'k$LS9+)`#3"K8L!ZJ!*J!!!ZJ!!"8'98p+V`! +'CJC#,`!"B"!JE`!'5QJ!E&h!4!!I3!!"(fm!!3!+9%mZRdjeLNP64%&A58j%6eF +!!!"46b"[!!`ZN!![D!!%!!4)9kK`5'm!"+K`)'m!%##A)@m!"!!%8%mZRdjeN8a +23d&-9%p(6%p#38a54808!!"2lrm!,bm""%K[!!41Z3!!!+""eb*[!3JJ2!!!!3# +L,Nr[!3!ZRdjeM%a26NG86e088NP14`!!!%r[rI``E`)),SK)E`!%,bm!"%kkrl4 +"l`!)@%p$l`%%)$`!!!%!SLj"l`%%)Qm##L!m!!!"!+)Z6qm#"#"I9%p1d)aA6e* +%9%p69&**6NF!!!"2lrm!)'m""%2AF$mLf&()rra)9amm!!&1Z3!!!&K"eb*[!3J +J2!!!!3#L,Nr[!3!ZRdjeK99$390&!!")ja`i6qrrm#"[!#`ZN!![D!!%!!4+,Bf +JC`!!QPP2ULNJAb4)H!"k!'"#98p)E`!#)&*)D!!L5'm!%ULU%"m@!%S$Cajk!8I +[!!J`+`!'N!"V!!)f+`!%PP2(`,D%E`3S!bK+@8m[#USV)&mN5#!+CVT+"@B)@8q +U+L"I+%KC6kSU)&qjb'B-98mqZ!ZU-"mf!'!#GJ!N9%AU!#)[,`!`2bS!!M!5d%- +r!$mU!!Br+J!%U+GJ)NAYq+3[,`!`2bS!!P922VJ,UM!Id&)r!$mU!!Br+J!%U+G +2l`!360mF1#kI6R@24d984%p058j"6P454808!!![#Nr[rq4)9kKd,bm!,+Kc)'m +!,%SS!'jQH%AYq+3[,`!X-")%3#F32`!`+J!#"%!R%$m!3LHT'bm[!#`I2!!"U3J +JE`!X)'J!FL"3,fJ!!J!8,fJ!"J!B5'm!"#"[!$")D!!36VVpSLp[!!J!%#p[!!` +!&#m[!$"#*kN)4HhiT#m[!$!r%MmU!!*#*kNE@%pJ0#"[!#`JD!"b)&![D!!#!"3 +[D!!'!"K)E`!%)'m!-%KS!""1Z[e5,fm!#!!3,fm!$!!8@%p&l`!8,bm!+$!U!!D +3!'S!!Mm!-#S!"*!!8Mm!U)![,`!N-#m!%T!!E`!D2`!`,`!5N!"[!"Sr!+L!,aH +SFdr[!"`NAb"I6qm!$%l3L%G&9&088P9$!!!!51F3-%r[rpJQE`!q,`Y)E`!N5'm +!,%kkrXj&l`!k5'm!'$!U!!+3!'m!+Mm!-"+3!'m!+Mm!-#S!!T!!E`!Zd'm!+Mm +!-"+3!'m!,Y"[!#Sr!+LR5&G)E`!F6VVpQLp[!!3!&#p[!!J!'%A[!"4)E`!-F!V +3DJ!#d'm!,Mm!F!V38Y"[!#ir!(!+d'm!,M)U!!D530*[!$)r!A!+d'm!,M)U!!5 +530*[!$)r!DLR5'm!$#m[!%+T6L!I*J![#e92,`1SDc!I2`"96bm$U'S`(cm!3LH +T'dS[!$KR##m,U48[#kKc6qm!+%cI$!JJAdr[!!T1d)a-6d0"9%9A58j%6eF!!!" +)jai`6qrrj#4[!$im,`!m1#m!1LkYM!i[EB`5!!3Q8LpV!"!!&#pV!"3!'#m5F$, +3E`!)2`"`-Y"[!!`r!%)RU4X[%Kmm!!'T##"V!()J8#pS!!)!##pS!!B!$#m53LH +T#$![!!k3!'m!#T!!E`!Dd'm!&NM!+J$JMH#0i)hZMGU!iS8f,`!-PQm!#*C[!"M +@E`!8$%-!%fm%GK0J%M"$)!MJL1#)i)MZL0#)iS!f!$!'$%!!#@)!!)l33$!l!!C +1q`!#!))!3J!8!%i!3J!8!%i!3J!8!%i`,`!%"%!!&*!!E`!-d'm!#%M!)J$JLH# +*i)RZLG+!iS&`&0"$5-$3J6p!!""J3(!8d%234$p!!""J0!a$!"0Q'$![!"L3!'m +!&&4!d%3b,`!%NN!r33!3B"B`,`!BN!"[!"633p"%-Lm!"**!2d%!%$!'8d!-3!! +)BP4A3'd`9d"Y!Q!d-#m!"T!!E`!#N!"[!!l3E`!+5-!L!1#*i)RJLHk*dS$LJ6" +&dSJr33!5B#!`"G"%2d!!%Q!@-#m!'T!!E`!@d%A34$)[!!D53$p"!")[%Mm[!"B +r,`!@3LHT'dS[!$KR##m5U48[%UNI6qm!(%cI$(JJAdr[!!T1d)a$48j849*A58j +%6eF!!!")jaJ!6qrrm#mm!!$rrb!IS$*f!%SYMDaR(&922ccrrdK[!!3[2(rrrrp +)H!!!U'!3(aJ!B"+TY&922ccrrdK[!!5TF"!I'!!`&e0!C`T93'F'98"R!Q!#GJ& ++!fHf,c`!!2rr)"qJ-Nr[!""-h`!B6R@)3e9&49C&6P3!!!![#Nr[rqiJE`!N3qm +!!L,B)YJLf#,B4Hm!!L!m!!!!rm#U!!)JE`!D-)!J2!!!r`$!UJ!#)J$ZJH#*i)R +JLG+!i)%JE`!H-)%`E`!LF!!`,`!LFJ!b+J!1`S#bL&I"4!%I33!"(fm!!3!S6qm +!%L4I)&p2l`!16Y#(5d9C8&*23`!!6qrrmLm[!"5SFbm[!"3r,`!@5'm!"NK[!!a +)E`!8UBdJE`!B)+m!"L&[!!S!"%r[!!iJAea26Y#)4d984&*&3e3!!!"2lrlb)'m +"%N2[!!T`2b,B8FMrr#m[!4Jr,`%D5'm!"NK[!44)E`!3UBd[,`%+5'm!$UQ26qm +"$L"I6qm!#Nl3L90&9%4*9%9B9!!!6qrqmLm[!43r,`%@5'm!"NK[!"4)E`!3UBd +[,`!+5'm!%UQ3!%([!!iLE`%B)$`!!!%!SLj2l`%1)&pF6dl3L8G&9%4*9%9B9!! +!6qrrmLm[!"DSFbm[!"Br,`!B5'm!"NK[!"4)E`!3UBd[,`!+2bm!&UPG6qm!$L" +I8%p1d)T"3e4*9N9*9%90!!!!6qrrlLm[!"Jr,`!D5'm!"NK[!"K)E`!3UBd[,`! +12c`!rDPG5(J!#%K[!!iLAb"IS$XLJ#m[!!j#CkPG6qm!%L"IA%p1d)Y$6%P$5d* +99&426J!!51FF!%r[rr)D,`!H)'m!)#p3!!B[D!!%!!T#,`!"5J9R"NK[!!DST(J +"5'm!!UPb98m[,`!%5'm!$+LY%"m@!,B%C``B!dS&C`C)E`!'U+496kPc%"pQdJ` +%!!&Q%%S&C`C)E`!'U+3II!!"!!%IE`!"!#42l`!160m!1#"IA%p1d)P88N&$5dP +848d!!%MR%$"2lrrb*Qm!)L4[!"j#,`!0-"063'FH98"RBP9!Cej63'F%B!!!h"p +m!!%!$65m!I9J!!$1,fX!#J!#98m[,`!%5'm!$+NX-"mf!$!$@8"R"'!!!+iJE`! +'XHm!*QB!!+)[,`!',bm!"NKYq+bT*4pm!!%!$65m!I4J!!#'98m[#cmm!3")E`! +)5'm!&Nkkr1i3(aB!5J0R#!a[!#i!#QF)$'m!'`!+CKJII!!"!!d[,`!Q2c`!!Nk +krQ)d[!!#B%"96c"[!!`[#%KYrVT)H!!#6VN!!!$3%"pR*Kpm!!%!$5"[!#C+U!# +BEa)[,`!Q2c`!!8kkrLBd[!!"B!3d[2rr(fm!$3!U6qm!$NcI$!JJAdr[!!a1d)a +69%423e9'58a849)!!!"2lrrX5'm!#+Kd,bm!'+Kc,c`!!`!$U*Y)9bm[!"`r2!! +"6VVmY#p[!!3!%#p[!!J!&%K[!"![22rmrrbSU8K[!"![2!!3!"#SX#mm!!%!!DL +E,bm!$+Kc6qm!'#kI6R@25%P-594&4%9'3P989%p1!!![#Pe24GFdV`!B0@m!&!! +#0@m!%!!%)'m!'L#A-@m!"!!%A%mNAb"I6qm!$%l3L8e"5d9$6da28J!!98md,`! ++)Qm!"R,r)&%`+!"H8d!J88(S!'$3`,4`!!"Y#L"4-LJ!AP0"B#4`!G""-J!J88( +S!'$3`E4`%!"Zl#"43HJ!B0$"Y(!3!'`#8d%qJ6pA!!a86b"IA%p1d)G(494-58j +&!!")jamJ@8mq,`!N,bm!)#"IS#NrEIkm!!*k!(ErH!!JE`!J*&![+J!q)&qJ+A` +"h)0`!G#$*J"C6bmU!$i[!dK[!!p)H!!"5(J!!%Ki!!'Ti#!I*J"`rlD!Ebj96b" +U!$i[%&92,`1SDc!I2`![2))'!"#SY6!ICK"`!G"&1J#k4ec!4!!B!'!'5S0X!RJ +"5J4RQLmU!$iJAk!U2SB[,`!J)&qJ+MpA!#CB6dcI"2JJAea26Y#3!%G&9&""8N& +69%&59%0)39)!!!![#Nr[r[*)9kKd2h`!!J!%5Lf0Q@F!!*aC6cmm#lG)H!!!5(M +rrkPm)&m[5!%+@8mr2!ZiUESJAb4))&*$l`!')$`!!!%!SLi[,`%+2c`!!dK[!!a +1Z[VU@8mr2!ZjUESJAb4))&*$l`!')$`!!!%!SLi[,`%+2c`!"%K[!!a1Z[V!5'm +"#Lmm!"i!""mm!!&1Z[H-,bm"#UKc,bm"#NkkrB4)H!!!5'm!#+Q4,bm"#UQ$$'m +!!J!%CNTC6cmm#lK)H!!!5(MrrkPm)&m[5!%'5'm""Lmm!"i!""mm!!&1Z[Fq,bm +""UKc2c`!!DL(2c`!#DL+,bm""UQ"6VVj!#m[!3DTJbmAU(02l`%1*&p1GBP65%p +A38*2993!!%MR(L!NE`!H1Lm!($`[!"Si,`!B0JCJ),T$CJ`[#Mm$(c`!!DP&B!J +[#Mm$3LHT43a$IrpR"P*$YN4[h%cI"(JJAdr[!!T1d)a$5%Y26Np'4NP848d!!!" +)jai`6qrrmLC[!$!k,`!Z2#m!,$J[!#Sf"Q!b,`Xr!dK[!!C)E`!85'm!%+Q0*'m +!#VC&CJS[#Mmm!!'TBf!',`T#CkPM$%0rrfF'8N1f4'r+6qm!$NcI$(JJAdr[!!T +1d)p3990)8N&%58p#99486di!!&92-#m!#,"[!!C["Mk[!!KJ"$k[!!Br9`!+9%m +ZRdjeK&G039J!!!"96c![!!L`E`!'E`BqV`!'B!3qV`!)2eF!#P42,Tp1GB4A68P +1!!!!6qrr!%KA2bm"#Mm[!3T1Z3!!!,K"eb*[!3JJ2!!!!3#L,Nr[!3!ZRdjeL8G +&9&*&8e088J!!)'m!##!3d+m!"#"[!!JJJ#"I8%p1d)C*6N039&)!!!")jaJJ6qr +r!#4[!4!J8KB35)-[#NKi!!&1Z[r'5N0X"!C$!3!`3bJ)F!!`!ak!,a*)E`!&,`3 +J(b*I)&qJ,Lm+-%-[#%kkrjT"eb*[!43J2!!!!3#L,Nr[!3"-h`3B,Tp1GBe69&* +*6NG'8Np08&45!!"2lrl!)'m"4%2AF$mLf&()rra)9dK[!34)H!!r)"mLAb"IS#j +"l`%!)Qm"5("!SLj2l`&!,Tp1GBe69&)b06986e088MBc!!"46h!#,S!JE`!-,a" +)E`!+,bm!##!I)PmJAk!Z,bm!$%Ki!!*1Z[m!2fm!"J!%2fm!"!!38%mZRdjeLeG +28N4'8Np08&45!!"2lrrdF!3ZJ#"[!"![%%K[!!`[,`!))"mLAb"IS#i[,`!35(J +!"%kkrVB[E`!)!!3[E`!%!"42l`!-,Tp1GBe28e4C8%9'8Np08&45!!")ja!J6qr +r!#4[!3`[#L"IS#P"lC!!XN2A)$`!!!%!SLiJ#QFk@8m[#Nkj!!!!8#!I*J!-J`! +!!2p["LBm!!!!re92,`1SDc!IFJ!b!"k",a*)E`!&,`-J(b*I)&qJ,N(A)Qm"%#! +m!!!"!+)Z,`SJAk!U6qm"!%cI"!JZRdjeM8K849K89%p69&**6NF!!#m$6qrkrL" +["3T$l`3#F$mLf&()rra"lC!!XN2[!`)J2!!!!3#L,NK[!J)[2!!F!)"1Z[fD3Hm +#"PK23qm!!L!m!!!"!+)ZGJ!@,`3#3Hm%!K!`-!#`,`!$CJ*63ck$0KGJ6%(["!) +3-$!!X#m!!fG%5'm$!N(["!C`!"!`-!!!3!%!2d!#"NK[!JC)E`%+2c`!!Nkj!!! +!i%([!4"2l`!13qm$!L!m!!!"!+)Z8d--3`!"E+j"l`-#)Qm&$L!m!!!"!+)Z6qm +&!LBI,Tp1GBe69&**8%C*6%9138e&!!")j`!`6qrrY#"[!&a$l`!#F"%Lf&()rr` +bf#4[!&K(l`!#&*-9D`!"!!%PD`!#!!*96cmV!!C#TdKV!!T)DJ!'F!'U8M!I2S! +eI2rr!%a#DJ"13LS!8%)U!&&#UJ"53QS!9Nr[!%a-h``!)&p36dl3Md026PC&8P4 +26%486dj&9`!!51FH!%r[r!!JE`383qm$!(!r)YK4b2rm5&F[2!!F!)"1Z[a+3Hm +!"&K23qm#!#!m!!!"!+)Z3Hm$!%2[!3!J2!!!!3#L,RJ!HJ!D,`-!2!8f"Q!83Hm +$!"!`-!#`,`)"CJ3i!f!)8d--3`!"E1C+4'mqZ%9Q%N(YN!#b3qm"!#!m!!!"!+) +ZB#K)E`-!F!(34$m!-!@3!%3r!%K[!!K1Z3!!!1K"ed2[!3!J2!!!!3#L,N([!3! +LE`3B)$`!!!%!SLj2l`3!60m!H#kI6R@24d984NP-48C56de3394)!!"2lrcm)'m +$#%2[!J4`2b,B8FMrr%K[!34)E`))6VVr"%([!3KB6d2[!!3J2!!!!3#L,R!!%#m +!"$p!!!*`!"![!J3qJ%K[!J3r2!!"-#m!"T!!E`!)2`")E`%-6VN!!!$S3Hm""#* +[!``J2!!!!3#L,Nr[!`3ZRdjeNdG&9&""9%K'8Np04P9-6&""9%J!!#m+6qrqb#" +[!84$l`!%F$mLf&()rra&l`%%3US!$%([!!3P5!!5*@m"3!!F3US!-%*U!"C96dK +[!3BJAh!"SQ!qJ$!I2S!rE`%D!!)rE`!#!8K2l`%i*&mJAe"26Y#24d989P*&4NC +56de3394)!!![#Nr[r[`JE`%13qm!"(!r)YK4b2rm98qTP$!I2S!r,`%BUCK#*kQ +E5Lm"$'F5@8m[,`%B5'm!$+JJ)&mN5'!3@8m[,`%B2bm"'UJI)&mN5,Am!*!%9X" +%!"p!!!-I2!!"UCXr&kQB,`UTSap[!!-"'Nr[!33NAb"I6qm!$Nl3L9*&8d9B590 +88`!!51F!-%r[rm)QE`"+3Lm!!3aY"`#0U'eD*%Y#NN+U!!4&l`!#F$`NJ%+U!!4 +#UJ!iB$*96bm,5'm!#$mm!$USMc!ICL"&l`!#$+T"8&"-!""Q%L!U!"5`V`"1CJJ +II!!"!!&J$P92,`Xr2!!iU)m`(fI!(fm!!3"56qm!2NcI$!!JAe"26Y#3!&"56d0 +&8e0*8e*96Nj*6NF!N!B)3%K!5d4a3Ma!i%"m3,9!6J#3#L0!!L!!'3!!!L!!!#, +D,`-JEBfZ)&!VD!!)q*`VD!!-q+"f!%SYMCKR$L"Yq(!J8%SS!"jQ!RC#)'hiF#" +3-#hiR0"S!"Bl32LF)'hiF#"3-#hiRY"S!"Jl32LH)'hiF#"3-#hiST!!D!!F1d$ +iSL"Yq(!J8$!S!"V33c)Yq+#53$Y"q+!`,ILLN!"Yq*il3*1-*Kp1GBe$38a$8&* +*6P4338G&!!")jaiJ6qrr0%kkrf!JEIK`)&"#D!!#G[m[,ILB)&qJ+A!"d%-f!&P +2)'hiQ#"3,bJ!2M"$,`K)EC(c5(J!!8Ki!!")H!!"UH!J(cB!98mJEILB)&!JD!! +q,a!r!bmmJJB!%+Le-"pQ2L"Yq(!J8(!"d'J!!L"Yq(!J8$&!!!*96cm$,bhiQ%k +j!!!$F$!I)'hiF#"3-QJ!!L)*8i(5J8([!!3aJ"J!5N0X!2pf,bhiQ#"IS#T&lIL +F1LS!"*T5-'f6ML!)8i$3J%(YNkJa[!!"#!!`EC11)!K6J0#!3Hf6U$*`#!!J#91 +!jBJJEIK`)&""k%&)3R!)!(B!H!!JEILB)&!m+!"HGJ"J!!+8)'hiF#"3Z'J!!Q` +!!-*`!G"%5-"6J0#!3Hm!",C`#!"Q!!#XF!(34$J!-'f6ML!)8i$3J%(YNkJbF!J +!)!P6J1@))'hiF#"33HK"5,C`#!"R!!)i-!063$"YNiiL#&1"dS&"lC1S-R!B!#) +*8i(PL5"Yq(!J8%(S38JaJ"J#-'f6ML!)8i$3J%(YNkKb!G*`#!!`EC11)!K6J0# +!3Hf6U$'"#!!`EC11)!K6J0#!3Hf6U$*`#!!J#91!jBJJEIK`)&""k%&)-B-)!'! +!!Ei[,IK`)&qJ+5"Yq*JJ8,CS!&jQ+M"YNiiJ#&1!d)""lC1S-R!)!#!*8i$PL#" +Yq(!J8%(S38JaJ`J#B!!"J$"&,SKC6c"$,`J`EC11)!K6J0#!3Hf6U$*`#!!J#91 +!jBJJEIK`)&""k%&)-R!)!#m*,bhiQ$mm!!QS25!IX*GQHM"YNiiJ#&1!d)""lC1 +S-R!)!#!*8i$PL#"Yq(!J8%(S38JaJ`J#-'f6ML!)8i$3J%(YNkKb!G*`#!!`EC1 +1)!K6J0#!3Hf6U$'"#!"`!G"$-'f6ML))8i(5J8(YNkJbF"J!)JP6JH@*)'hiF#" +33HK"5$'!'!"J!!$%-%8ZL&P2-%-[#$"YNiiJ#&1!d)""lC1S-R!)!#!*8i$PL#" +Yq(!J8%(S38JbF!J!,`N[,ILB2c`!#DJp)"q`Pfpi-!063$"YNiiL#&1"dS&"lC1 +S-R!B!#)*8i(PL5"Yq(!J8%(S38JaJ"J#-'f6ML!)8i$3J%(YNkKb!G*`#!!`EC1 +1)!K6J0#!3Hf6U$'"#!!`EC11)!K6J0#!3Hf6U$*`#!!J#91!jBJJEIK`)&""k%& +)-B-)!'!),bhiF#"IS#S-3hrrC`K53lC'E`$pDNr[!-a-h`4i6R@+8N9338G&6N& +843!!!%MR(#"2lrrf,bhiF#"IS#NJEIK`)&"+8'F!!)SJEIK`)&!k%(B"B(J`3b! +)8i!L2!!!!4*1Z3!!"0SJEIK`)&""k!%31$!)#M"%)!K6J1@))'hiF#"33HJ!)#" +`#!!J8#pS!!)!!LpS!!B!"NA[!!)`+J!%N!"5-%-L#&1"2S!J2!!!!4*1Z3!!"0S +JEIK`)&""k!%3-CF)"!a$IrpR"P*$YN9[K#mYq(!JAk!U6qm!#NcI"$K1GBe$38a +$8%P$5%9*4dK8!!")jamJ6qrqb#mYq(!JAk!T)'hiF#"35P"[!!(5)'hiF#"32K" +f!@!!!EiJEILB)&!LEILB)P%k+3!'QQJ!!M"$)!K6J#)m!!!"%Nkj!!!%fL"Yq(! +J8%(S!4!i-!J+-%3J#&1!jBJJEIK`)&""k!!J)(!)!#"3,fJ!!J!H,fJ!"J!L4Hm +!(MJU!!DBDJ!#2#S!"*a5-%-J#&1!)M`!!!%56VN!!!6D)'hiF#"33HJ"%0(!3qm +!*R"$)YK4b2rm-YK&l`!Q5LS!%'B!!)Di4@m!!)!JEILB)&!dU!!#)'hiQ#"30@J +!"J!#2S4)9dK[!!3r2#!1UHXr43!+5'm!#NK[!!ir2#!1UHY)9dK[!!ir2!!'UHX +r4J!85'm!&%K[!"Jr2#!1UHY)E`!+5'm!'$mm!!5Tkbm[!"S[,`!D2bm!(%kj!!! +!`$9!!!42l`!+B')`+J!)8d"R#P0!CbT63'FbB$i`"C!!4%M!)J$JLH#*i)RZLG+ +!iS%JEILB)&!bD!!#dSNdJ@!D)'hiQ#"30+J!!Q!1)'hiQ#"3-#J!"T!!4$5!-", +34$9!!!*++J!3CJ3e4J!%-%-J#&1!)M`!!!%56VN!!!6D)'hiF#"33HJ"%0(!3qm +!*R"$)0P4b2rm-0N-3hrrC`K53lC(E`$q3#mYq(!JAk!U6qm"1%cI"2K1GBa$38a +$8%P$9dP%9%J!!!")jaJ!98pfrhJ!,bhiQ#"IS#P`!G#$*J"C6b"Yq*JJ8#mS!$i +[!dKYNI9)H!!"5(J!!%Ki!!'Ti#!I*J"+Jfe898mJEILB)&!JD!!q,a"96bm$U'X +`(cm!,cb#"J!3U,8`(fB`F!(34$J!98m[!kKV-"m`4#))8i%qJ#!m!!!"%Nkj!!! +%fL"Yq(!J8%(S!4!aP`J')'hiF#"3Z&"R"NU$E!$rF#mYq*JJAk!U9%p-h`!B6R@ ++3d&-3e"*3da23`!!!%MR(MK2lrlN+'m"3#C[!6a#,`!&)'hiF#"32""f!@!!!0S +`3b!)8i!L2!!!!4*1Z3!!"0SJEIK`)&""k!%3dF"$l`!+F%-Lf&()rr`bf%A[!!T +96cmU!!B[,ILB6VN!!!0`-"mk!&P22bS!"LmYq*Jr2!!)U$dZRbpA!!CC6h!"d%9 +)`#m!F!(348M!,`![,ILB2c`!#DJp)"m`E`!')JL5J$J"98m`"0"U!!3r!#"Yr1) +`+!!8"%!!%$m!6VN!!!1J-"mk!#m,2a)r"$mU!!)r"DLR98m[,`&',`ZSV4!ICa" ++DJ!19X"%!"p!!!8iJf!1$%0rrfF)8N1f4Qm!rb3IE`!&!8K2l`%F60mFH#"I6qm +!$%l3L80-580,8%P$9!!!51FI-%r[rXBH,`&D)'m"A#p3!!`[D!!%!"!JE`&J,e! +!&#pS!!3!'&P2U0JJAbC),`ZSHNK[!"5SHhB!F!(33cB!-%-J#&1!)M`!!!%56VN +!!!6D)'hiF#"33HJ"%0(!3qm!+("$)YK4b2rm-YK&l`!S1#S!#P922bS!"LmYq*K +1Z3!!!h!`(c`!@8mr+J!',bhiQ$mm!!LS25pI!!J[E`!)!"aC6h!"d%C)`#m!F!( +34NM!,`![,ILB2c`!#DJp)"m`E`!F)JL5J$S"5'm!)$m52`8r+J!#-!A3DJ!%2`# +STbmYq(!JAk!T-%3J#&1!jBJJEIK`)&""k!!J,c!)!#"IS#P96dK[!#*)E`!55'm +!#ULU%"pR+NS(C`T+"fFL5Lm!1@FF-%3J#&1!jBJJEIK`)&""k!!J,c!)!%K[!#5 +SpM"%)!K6J1@))'hiF#"33HJ!)#m`#!!JAk!U,bhiF#"IS#SJEIK`)&#f8'F)ZQm +!''m!rXJ[#kKj,`ZSf8r[!6T-h`ci)&p2l`!+6Y#+4NPB8%P$9&9543!!!#m$88p +96bmYq)5TB$!I)'hiQ#"3)QhiQ#*4-LN!#**3NN!f!8T$C`!!X%*R2`-[,ILBUGd +JEIK`)&"+8'm!!*T+3fp)5&FJEILB)&!r+!!+)'hiQ#"32bJ!##"Yq*JJ8$mS!!j +96b"Yq*JJ8$!S!!M33cm!)'hiQ#"32bJ!$%kj!!!$S$!I2`#STf!`5&FJEILB)&! +r+!!+)'hiQ#"3-#J!$0"$2`!JEILB)&!r+!!1)'hiQ#"32bJ!$+LR)'hiQ#"3,UJ +!##pS!!`!"%KA5'm!"%)R6VVpMP"2*Kp1GBT"4%T98e4849K8!!!!,`0C6cpm!!d +!!L"Yq*JJ8#*Yq*JL86!T!!b3!'J!#$k!@8mJEILB)&!bD!"H,`P)H!!",bhiQ$m +m!!QS25!I-&H3!)Jf!#mYq*JJAk!T)'hiQ#"35QJ!2'pS@8mJEILB)&![+!!q)'h +iQ#"3-#J!2&0!5-![!%([!!j`!G#))%")8%Ki!!&)H!!!5(J!!DRJ)"p+J'mX@8m +JEILB)&!bD!"H,`NJEILB)&!bD!"H,`N[,ILB2c`!#DJp)"m`3p#)0J![,ILB)&q +J+NT$E!jf!#mYq)3r2!$rU9eJ##mYq)4#CkPG,bhiK$m$U@9+3fmD,bhiK#"Yq*J +J8#*Yq*JL86!T!!L3!&!r!+PM@%mQ(djeN!""4%T98e4@8d056da-3N&5!!!!,`S +[,IL%U9JNEIcL8)T3LLmYq)3`+J!'"%!!$cm!-"*63$m!U9N[,IL%2c`!%$!U!!5 +3!&)%3!!02`#TA#mYq)5T9b"Yq)3J8%KS!!LT+L4I6R@04NPB9P0$8Np-6%*"8J! +!,`T46`aY!!'6N!"[@LmYq)#T@#4Yr1*3LP#+,bhiJ$mU!!)`+J!%"%!!%$m!U9N +[,IL!-#S!"T!!DJ!#"%!!$Mm!2c`!%+PF,bhiJ+PA)'hiJ#"3,UJ!##pS!!`!"(! +"d&FqJ%KAU5T36b4I6R@04NPB5&0$8Np-6%*"8J!!,bhiQ#"IS#N[,IK`)&qJ+5" +Yr1)LEILB)P%MD!!3!!JMD!!8!!`JEILB)&!`+!!1"%!!$b"Yq*JJ8$&!!!iJEIK +`)&!LEILB)P%`+3!+d'J!%#"Yq*JJ8$&!!!SJEIK`)&!LEILB)P%`+3!-"%!!$j! +!D!!5)'hiQ#"3-8!!$#"Yq*JJ8#*Yq*JL860S!!S!!L"Yq(!J8#*Yq*JL86!T!!k +3!'J!&#"Yq*JJ8$&!!!B[,IK`)&qJ+LmYq*JJAk!U6R@,4NPB9%9B9&*&3e3!!#m +Yq*LTd%kkpV"1GBa5480"6%4*8e"-39N!!!")jaJJ*'m!%MJ[!"!`"!4!!"4R%&0 +!Cc*63'G88d"RGQ!!!*K96e92,`UTB$!I"%!!$$m!98m[#UPK-"mr!%kj!!!$Q$! +I0J"JF&9298m[#UPJ-"m'3!!-2`"96bm+U@)`(cm!6VN!!!1J-"mf!'"+98m[#UP +J-"mJEILB)&!LEILB)P%b+3!)NQJ!$0*!"N%!$$B"B#496bm+U@!`(b"Yq*JJ8#* +Yq*JL86)T!!b5D!!)dN!%33!-0J&+4'F+,`Sr!kPM6VVlC%cI""JJAea26Y#+8d0 +56da-9%9B9!!!!#m$0Lm!$!a$!)&Q'P92,bhiK#m[!!j)H!!!U@J`(cB!6VVl+'! +898m[,IL%,bm!$NKY!SLTD$!I0J!Q(b"IA%p1d)K%6e0$8Np-6!!!!%MR%$"2lrr +H*'m!0LC[!$)JE`!m5&")E`!%2c`3%+RV,eF!%LmYq*JJAk!T@8mJ8MmS!#![#Mm +m!!LS25pI!!i[E`!1!"S[E`!D!"j96b"52bJ!)#m+6VN!!!0`-"p)`#B!98pC6bm +$,`-[#Mmm!!QS25!I,`#SDc!I-Lm!(T*!2d%!(M![!$T63'F'8d"R#Q!1,fm!(J! +@B!B[E`!D!"C96bm[!"`J8NKS!!LSV4!ICa*96bm[!#!J8NKS!!LSV4!ICPS[#b" +5)P)`+3!-N!"S!!Jr3!!)5'm!#%K[!!`r2#!1UHY)E`!@5'm!$$mm%!5Tkbm[!!i +[,`!12bm!%%kj!!!!`#p!!!i[#kPJ-"r3E`!L5-#3!+m!$&"22`#TBbmYq*JJAk! +U6qm!)NcI$!JJAdr[!!j1d)p63e*26%a648a&3e4*6di!!#m+6qrrmPP2U0JJAb4 +),`USHL"Yr1*)D!!3U(Y)E`!#UA)JEILB)&![D!!)!!B[D!!-!!S`,`!#X'm!"Q` +1,bhiK$mm!"41Z[e#B"B`,`!#X'm!#Qm-,bhiK$mm!"91Z[dU,`USH5m+U0NII!! +"!!%IE`!"!"C2l`!1*&p1GBT"99428d056da-!!!!,`SNEIcL8)T3LLm[!!J`+J! +'"%!!%&*!2`!`+J!%"%!!%$m!2bS!"MmU!!5STb4I6R@,4d984e*29e*&3e3!!#m ++*'hmiP#+8)S[,`!)2bS!!M!U!!3%3!!32`!`+J!'"%!!%$m!-#S!"!4!!""53$m +!U+FNAdjeMdG&9%G56eG-58j&8N9$9!!!51F!-%r[rr"+,BfPCe3-E3!"Nj!!Eda +C6kMB)&mN5#m+U(SQEIcL8)Y3LdK[!!J`+`!'"%!!%$m!-#X!"!4!!"!r!$mV!!B +r+`!%U+G)E`!)U(X[,IcLU33[#UKj,`USf@"+@8qSf#"I*%J[#UKk*QhmiP#,8)Y +)E`!)-#X!"J4!!"!r!$!V!!3%3!!32`!r+`!'2bX!"+LR5'm!#+Kl,bhmiUN%,`U +SH5m+U0P)9dkkrXB[E`!%!!`[E`!)!"")E`!-U5T)E`!%6VVql#p[!!J!%#p[!!` +!&%K[!"#SSdr[!"K-h``!6R@04&*"9e*(8NpA58026J!!,`T2lrrX,bhmiUKc*'h +miP#+8)S`+J!#"%!!C$m!-#S!"!4!!""53$m!U*0`C0"U!!Br!$!U!!3%3!!38N! +r!+L45'm!$$!U!!B%3!!39%!r!$!U!!3%3!!39%!r!$mU!!Br+J!%U+G+,`!FC`a +)E`!-5'f-HULPB$*C6bmYrVir2!#"U"mJAbp)!!J[,`!))&qJ+5m[!!K)E`!3U2B +[,`!))&qJ+Lm[!!LTSdK[!!``+J!'"%!!%&*!2`!`+J!%"%!!%&*!2`"`&0"U!!B +r!(!8d'S!"$m!U+G)E`!-U+&)9dkkrCS[E`!%!"![E`!)!"4)E`!3U5T)E`!%6VV +p`#p[!!J!&#p[!!`!'%K[!"5T+Nr[!"`NAb"I9%p1d)e%8N&A6NG56eG*3dp1!!" +2lrd!$'d!!C13!'pb-'f6ML!)8i$KL%(YP($4`%K35'hqa%K[!!J[2!!5!)"1Z3! +!!kKB6dK[!!K)EIl#5'f1XNK[!43r2!!&6VN!!!$J3Hm"'Nr[!"T$l`)!)$`!!!% +!SLj"lBkb3qm#!#!m!!!"!+)Z,bhmiNK[!J5T'Q!+,bhmiNKYMV+T'Nr[!`"1GBa +548j"689A58j%6eF!!!")jaJJ6qrrpMJ[!"T)9dKirrp)H2rr5(Mrrdkj!!!$D#Y +[!!6mh$Y[!!Mmi#mYrXBr2!#!U"mJAb4))!TR!!#D,`SJAk!T,e)!"NK[!!C)H!! +'6VN!!!1`98p)E`!)6VN!!!2)-"p53$B!Z%0Z#MB%8d2(r!!)B!*f!%K[!!B`3bm +)6VN!!!1`98p)E`!)6VN!!!2)-"mf!&925'm!#%kj!!!$b$!I1d$mh&925'm!#%k +j!!!$b$!I1d$mhP925'm!#%kj!!!$b$!I1d$mi#m+)&qJ+Lm+UD02l`!+60m%'#" +I9%p1d)p-6d&%9dP14%pA3dp-6e)!!%r[rr4)9kKd,bhmiUKc,bhmiUNL)'hmiNK +S!"#SSb"Yq*JJ8#pS!!J!"#pS!!`!#%K[!!3[,ILBUG-JEIK`)&"+8'm15'm!"%K +[!!K#*dkkm[BJEBf8)&"++!!*C`C1Z[[NB!JI,BfV6VVmdLmYr1+TD5mYr1+T)bm +AU(02l`!-6R@3!&934%&848e"58jA58j%6eF!!!")ja``6qrp!$JYr1K64!aY!!' +6N!"[(LmYr3J`,C11d%3r!$mYr1J`,C13!0"%2`"1Z3!!!iK(lBfB4HhmkPP2U53 +JAl(Yr1*Q!!&!5LX!"'F5,bhp!$m5U6N[,Id!2bS!!UNj5LX!"@F+,bhp!$mU!!5 +T18SV!!0R1#mYr3!r+J!'U6P96dKYM)a)EC!!XMmm!!&1Z3!!!0J3(fF-,bhp!$m +U!!LT1@!+,bhp!$mU!!LT1NSV!!CR#LmYr3!r+J!+U6N[,Id%2c`!!DNk,bhp"$m +m!!1T1NSYMCpR&L"Yq*JJ8#*Yq*JL86!T!##`D!!LCJ`[,Id%2c`!"+NkB!S[,Id +%2c`!"+Nj,bhp"$mm!!@T1LmYr33r2!!'U6T+,BfDCcJ[,Id)2c`!!DNj5&F[2!! +@!)"1Z3!!!kK"l`!%@%p$l`)!)$`!!!%!SLi[,Id)2c`!!8K[!JDT4`aY!!'6N!" +[!!%X1Lf6N!"f!@!@,bhp#$!$d%3r!+Nj$%0rrfF!!4"53lC&EqCJ!!%'5LX!"'F +5,bhp!$m5U6S[,Id!2bS!!UNk5LX!"@F+,bhp!$mU!!5T1NSV!!0R&#mYr3!r+J! +'U6S[,Id!2bS!#+Nk5LX!"QF+,bhp!$mU!!UT1LmYr33r2!!"U6N[,Id%2c`!!kN +j,bhp"$mm!!5T15mYr33r2!!&U6N[,Id%2c`!"UNj5Lf0QQG5@8qT*#"IXHhia'B +m,bhp#$mm!!'T18K[!3![2!!A!)"1Z3!!!kK"l`%%@%p$l`)!)$`!!!%!SLi[,Id +)2c`!!8K[!JDT4f!+,bhp#$mm!!'T1JaY!!'6N!"[)$SYNj!!GJ&J&#mYr3J`!p" +%2`#T1Ja$IrpR"P*$YN9[k%r[!`"-h``i6R@18d98689198K*6%P849-!!!"+,Bf +VCLKC6kNN)&qalIcLCKa+,BfICaBJEILB)&!LEILB)P%`+3!JX'J!)QB),bhiQ+R +CB!a+,BfIC`B[,ILBUGK1Z[d86R@(4NPB3e958`!!51F3)%AYNIS-8J"NCLjf!@! +LF!(33dM!8i$PL#"+9)Jb3b)*8i(PL5*+9)NMX!J!'!"53`a$!'0[f'!'F!(38M5 +!-&)J#&1!jBJJ5P5)-Df6MJJ!98m[,IL%U@!`(c"5)JK6JH@*)%T8L$'!'!*-h`3 +)6R@+6%p"4&"*3e*86J!!!%r[rIkS8%K[!!)[2!!2!)"1Z3!!!kK"l`!'@%p$l`% +#)$`!!!%!SLj)E`%#5'f3!,*)EC!!XNKYN!#bUBY96cmm!)&)H!!!UBB`(ck!6qm +#!LkI6R@,C'p0C@e"E'9bG$!!!%MR(b"2lrK15Lm(cQF%6VVr$L"Yq(`[%+K45'm +!!UKd,bhmiUKc1fm(d*11,bhiF#"IS#Pi!@!F-%3J#&1!jBJJEIK`)&""k!!J,c! +)!#"IS#Y54!a%!$a[hLmYq(!JAk!U98qTP$!I2S!r,C(iUCJ[,IK`)&qJ+6BYNij +63`C$!)!JEIK`)&![+!!')&qJ)e922bf4q#mYrXSr!dKYrXj#*dkj!!!%#"!ICcK +C6bmYrY!r!kJI)&mLEIK`)P%M5!!')'hiF#"35UJ!"QB)5'm(bNkkrX`JEIK`)&! +[+!!'UC*J&PP23UFJ(k%L,SJJAb*Yq(!L850)!!BJEIK`)&![+!!+)&qJ)e922bf +4q#mYrY3r!dKYrYK#*dkj!!!%#"!ICdKC6bmYrYSr!kJI)&mLEIK`)P%M5!!+)'h +iF#"35UJ!#QBB@8p#Tb!IS5)ZL#"I)QhiF#*4)dJ!#Q!N)'hiF#"3,bJ!#UQ5B"C +C6d+R)"qK)Lk))&mLEIK`)P%M5!!+,bhiF#"IS#TC6bmYrYir!kJI)&m[5!Fb)'m +(-L"3)QhiF#*4)e!!$L0S!!3!%L"["c)J8#*Yq(!L850S!!J!&L0S!!`!'L"["c) +J8#*Yq(!L840S!"!!(L"["c)J8#*Yq(!L860S!")!"#m["c+TSb"Yq(!J8%*398m +[,IlLU!d`(cJ!5N4[!!,+)'hiF#"3F!(38#"Yq(!J8$#!)'hiF#"30Lf6MP0$ar` +!C!C$!-M@8&P2,bhqjMm$U"mJAbp)"c*+V`FbC`!#9%A["4`[,`Fb)&qJ+9P2,bm +(0UQP)"p4J#B!)'m(-Lp3"kj96dK["l"1Z3!!!mJ`(c9!!!a96dK["l"1Z3!!!mJ +`(c9!!!K96dK["l"1Z3!!!mJ`(e0!9m"%!"9!!""96dK["l"1Z3!!!mJ`(c9!!!i +[,`HZ5'S!%Lm$)"mLAb"IS#i[,`Fb)&qJ+Lm["c+TSb"+3HJ!%Lp)"kjC6c"U!!i +[#%kj!!!!b#!I6VN!!!B!!9J!!3!3!!B!!3!q!!8!jJ!'!")!"`#m!!J!r!!0!%i +!%!%@98p)E`H`6VN!!!2)-"mf!&925'm(X%kj!!!$b$!I0J"J!!%598p)E`H`6VN +!!!2)-"mf!&925'm(X%kj!!!$b$!I0J"J!!$Z@8p)E`Hb6VN!!!23,em!"Lp[!!B +',PP25'm(XNkj!!!$d#pI!!S[E`!+"LjC6dK["l*1Z3!!!p![A`!1,fm!$JBZ5'm +!%NK["l*1Z3!!!lK"l`!@@%p$l`Bb)$`!!!%!SLjJ!!#)5'm"%NK["l*1Z3!!!lK +"l`%@@%p$l`Bb)$`!!!%!SLjJC%K[!K*)E`Hb6VN!!!1i3Hm#&PK23qm'-L!m!!! +"!+)ZB%*)E`-55'm(XNkj!!!$Z%([!aCB6d2["M)J2!!!!3#L,Q!J5'm%%NK["l* +1Z3!!!lK"l`3@@%p$l`Bb)$`!!!%!SLj96dK["l"1Z3!!!mJ`(e0!9m"%!"9!!"% +JEIK`)&!b8#!*8i!L2!!!!4*1Z3!!"0SJEIK`)&""k!%3dF"$l`8FF%-Jf9()rr` +`f8U["c*R'#"Yq(!J8!a3!$aR$#"Yq(!J8,K3CJ$p8NU["c*Q%L"Yq(!J8$!38d! +JEIK`)&!`J#"Yq(!J8%T3E`!"M(i!)'hiF#"32e!&%RJ"B!!!c(S!2!Gf!@"H-%3 +J#&1!)M`!!!%56VN!!!6D)'hiF#"33HJ"%$*$)JP6JG+"3qm(0M)a'!#bF!J-CL4 +k!6"%)!K6J#)m!!!"%Nkj!!!%fL"Yq(!J8%(S!4!aJ`J+B!`-3hrrC`C53lC'Ejj ++"@C8F!(34ci!-%3J#&1!)M`!!!%56VN!!!6D)'hiF#"33HJ"%$*()JP6JG+"3qm +(0M1`#!`B!$"%)!K6J#)m!!!"%Nkj!!!%fL"Yq(!J8%(S!4!aK`J+$%4rrfF+8N5 +iE`85E`$r-$S(H!&J!!#D-%3J#&1!d)""l`Ff0M!)!&P2,bhqkMm$U"mJAb4)98q +TVc!I0J!J#QGH5N0Q@M"%)!K6J1@))'hiF#"33HJ!)#'+#!![,IK`)&qJ+992-%3 +J#&1!jBJJEIK`)&""k!!J5(!)!%kj!!!!U$!I0J![,IK`)&qJ+NT$C`K)E`I+6VV +j9#m+UD0J#%K["mT1Z[P'$%4rrfF)8N5i4@m!rf3r&kQB@8qSf#"I*%J[#UKk2bm +(d%kkp"B[,IcLU(0)EIcFUK8JEIcL,fJ!%!88,fJ!&!8B5Lf0T@FB$'d!!C13!'m +3)'hiJ#"3F!(3D!!)2d!&'%K["45SSdK["44#Td+RU+G)E`88U(X[,ILBUGP#Tb" +Yq*JJ8$*S!$`[#5mYq*LTd5mYq*LTebmYq*JJAk!T)'hmiL*Yq*JL85+S!"!MD!! +8!!3[,ILB)&qJ+Nkkl%3[,IK`)&qJ+5"Yq(!J8#mS!!BJAk!T)'hiF#"3,bJ!#L" +IS#NJEIK`)&!r+!!%,bhiQ+RI,bhiQ+RB@8mJEIK`)&![+!!'6VN!!!"3)"mQ!%U +$Ee!JEIK`)&!JD!!',a![!dKi!!![,ILB2c`!"kJp@8mJEIK`)&![+!!+6VN!!!" +3)"p+J'mF3UF[!b"Yq(!J8#mS!!SI2!!",bhiQ$mm!!ZS25mYq*LTf5mYq(!JAk! +U)'hiF#"3,bJ!"L"IS#SJEIK`)&![+!!+)&qJ+L"Yq(!J8%T3E`K1ZZ6m6VVL*%k +kl#i[,IL%3QHTBdkkk'K1ZZP3,`USH5m+U0N[,IL%U@dJEILB)&![D!!)"43[D!! +-"4K)E`88,bhiQ+R65Lf0SfF898m[,IL8,bhiQ$mm!!qS26!I0J!JEIK`)&"+8'm +J)'hiQ#"3,fJ!#!88,fJ!$!8B5'm&&%K["4K#*dkkjPS[,`!#U(02l`Hb60m%q#k +I6R@(8d983dK"8!#3"6"!P8+H32D`3(0!c8(,Nd#3!%"83GQ1Z,6SZ2Ihq1K!Vl& +!dAq!35e!YF4"h(q!q2EiaI6hple!9[Ae3'I[lqrZ36p!Xq8!!!!13R,B35KrFG9 +")VK!S8RU39ATj1Cr[!#3"KIX!K!!!J!!!K!!!"HD51FB!%r[r!!JE`3-3QMqc$J +YNj!!GJ&J4$!$8d!JE`3--8$rl&923LFJE`335'Mrl#"[""3[+2rS2c`!2+RR%"p +R%L"["!a`!G"SrX`JE`3--8$qc!a$IrpR"P*$YN4[Z#"["!a+D2l-EaiJE`3-%A` +!!Ikj)'m%$#mSrp4)H!!"6VN!!!0!B"`JE`3-3LMqZ5"["!`[+2r8,c`!r`!"6VN +!!!0!)'m%$#mSrp3r2!!'5'm#"MmYNj!!6VN!!!,i@%p)E`)'5'hqmL"[""T)D2b +-5'hqm%K[!4BJE`3Q2bMqc%kj!!!#q&K25'm"&NKYrZj)E`!H,c`!'`#!6VN!!!1 +S@%p)E`!H)'m%,NKSqia)E`-Q2c`!#%kj!!!!i%r[!#C)E`-'6VN!!!-`)'m%$%* +Srqa2l`3!60m!'#kI6R@,Ff9d6A0R9'9iG$!!!%MR(#"2lrZ)*'m%M%K[!!LSG(S +!3Qm%GN(Yr[4$l`-JF!FLf&()rraC6cmm!)4)H!!!5(MrrkPm)&m[5!4F5'm%A#m +m!"i!""mm!!&1Z3!!!a![,`4FU(0)9bm["'!r2!!&6VN!!!-S,fm!"!01,fm!#!0 +55'm#'#mm!!d!J%kj!!!$U%([!KaB6d2[!"JJ2!!!!3#L,NK[!KJ[2!!1!)"1Z3! +!!kK"l`)F@%p$l`%B)$`!!!%!SLii,C13!(B"@%pJ*VCYNijQ$M"$)!K6J"@m!!% +)!'!+-%-J#&1!3M))!!a$IrpR"P*$YN4[eM![!dk3!'m$5NM!)J$QJH#*i)RJLHL +*dS$SJHQ*-'m$5Y+)2d%$6Lp[!dS$3Lp[!di$4NK[!d)[22rr!!#SUA!"d'm$5$p +!!dJ`,`03"%!!$cp!!e"`!G"[!d`r3!0-5'm!$%+R2c`!!6mYNj!!U+FrI!!3!a3 +`,`03N!"[!d`r3!-@@8p)E`015'm!&#m[!b"#Cbm["'j#*d)R3LFI2!!"2c`!4+R +R)&m[5!4`1#f6N!"f!@"%-!063$p!"(3`3b!)8i$KL%(YP($4`%2[!eSJ2!!!!3# +L,NK[!eY`!"![!eir!#m["(S[,`4k2c`!@+RR$%0rrfF'8N1f4'qi)'m%F#"3%A` +!4J!N1#f6N!"f!@"!-!063$p!"(3`3b!)8i"+-JJ!Ca3I2!!",bm%GLm["(Br2!" +FUHGJ%%)R,bm%GLm["(Br2!"FUHF-3hrrC`C53lC%Ela#E`4d(h`!!30"(c`!!5m +["()r2!!XUHF[,`4`2c`!%+RR,bm%A%kj!!!$B%SYMDaR(&922ccrrdK["'3[2(r +rrrp)H!!!U'!3(aB!B"+TY&922ccrrdK["'5TF"!I&J"+!fF!!AC96dK["'+TIa! +IC`!"8&925'm%BMmm!3")E`-Q5'm$ANkj!!!$)"!I&J"`!$!["'"AJ'Bk98m`E`0 +8,`K)E`-Q5(J!)%kj!!!!d"!ICb"+,`0"CaTk!5m["&`r2!!"6VN!!!0)2h`!!34 +DB!!"#(!!-#m%B&f!CN![,`4FU5*)E`0#U+%JE`4F,bJ!'#m["(3r2!"NUHF[,`4 +FUB&)E`5)6VVlELm["&a1Z3!!!f![,`4FU50J!!#q98p)E`4L5'm$)%K["'5TJ"! +IC`!!U$!["&S-3!!&BJ!!R0"!-$X!"Nll!!)!N!!!$!!-!!`!%J"+HJ&J!!#!1#f +6N!"f!@!L-!063$p!"(3I2!!",bm%GLm["(Br2!"FUHF-3hrrC`C53lC%EpT)E`5 +)6VVkjQ"',fm%DJ0@5'm$9UKa98m[,`0B2bm%G#m["(Jr2!!BUHF3(aB!5'm%L%k +kqVKJ'$!["'"63'F+98"R"P9!C`*J"Mmm!!'Tb%S&C`$q6M!["&T63'F+8d"R5&0 +!CdTJEMJYNj!!GJ&J,M!$8d!r3!4d98p#*dK["(J[,`4i2c`!2+RR%"m`3b))8i% +9J"J!$%0rrfF'8N1f4'r1(h`!!3-CB#a#,`-CB#Bi,C13!(B"B"3`3b!)8i!9[!! +"#!!-3hrrC`C53lC%EqJII!!"!aN[,`4`2c`!++RR,bm%A+Q$,bm!#+Kc(fm$'35 +3!%r["(K-h`3i,Tp1GBP$5%&38N&14d8!!#m$U&![2-J!!!#Sr992,cbk!!!!U2d +`(fBf98m[,BfZ,ca5"!5BU2d3(aB!98m[,BfZ,c`U"!5%U2d3(aB!5J0R#"Ym!!( +mjQ!-3LhmjQ!'2c`!!DR),cc3!!!!U2dQ(djeKd428d9899!!!#m+6qrq!%SYMCK +R!!0d)'m##%KSmQ`JAb#i!J`JE`)),bMbE%)R5'm!"Mmm!!+Tl5"[!JJ[+2*X(c` +!!NK[!3C#CkRY4Hf6NM!59d"R$P0!Caj93'F`98"R3Q"@3GFLE`))3qRbHL!m!!! +"!+)ZB&C"l`%!)Qm##%2TmRSJ2!!!!3#L,Q"!3Hf1XL*[!JK$kI*k)$`!!!%!SLj +J+N(YME)LE`))3qRbHL!m!!!"!+)ZB"4"lC!!XL*[!JK$kI*k)$`!!!%!SLi`+J! +#9d"R$P0!Caj93'F`98"R3Q"@3GFLE`))3qRcHL!m!!!"!+)ZB&C"l`%!)Qm##%2 +TmhSJ2!!!!3#L,Q"!3Hf1XL*[!JK$kI0k)$`!!!%!SLjJ+N(YME)LE`))3qRcHL! +m!!!"!+)ZB"4"lC!!XL*[!JK$kI0k)$`!!!%!SLi`+J!%9d"R$P0!Caj93'F`98" +R3Q"@3GFLE`))3qRdHL!m!!!"!+)ZB&C"l`%!)Qm##%2Tp(SJ2!!!!3#L,Q"!3Hf +1XL*[!JK$kI4k)$`!!!%!SLjJ+N(YME)LE`))3qRdHL!m!!!"!+)ZB"4"lC!!XL* +[!JK$kI4k)$`!!!%!SLi`+J!'9d"R$P0!Caj93'F`98"R3Q"@3GFLE`))3qReHL! +m!!!"!+)ZB&C"l`%!)Qm##%2TpASJ2!!!!3#L,Q"!3Hf1XL*[!JK$kI9k)$`!!!% +!SLjJ+N(YME)LE`))3qReHL!m!!!"!+)ZB"4"lC!!XL*[!JK$kI9k)$`!!!%!SLi +`+J!)9d"R$P0!Caj93'F`98"R3Q"@3GFLE`))3qRfHL!m!!!"!+)ZB&C"l`%!)Qm +##%2TpRSJ2!!!!3#L,Q"!3Hf1XL*[!JK$kICk)$`!!!%!SLjJ+N(YME)LE`))3qR +fHL!m!!!"!+)ZB"4"lC!!XL*[!JK$kICk)$`!!!%!SLi`+J!+9d"R$P0!Caj93'F +`98"R3Q"@3GFLE`))3qRhHL!m!!!"!+)ZB&C"l`%!)Qm##%2TphSJ2!!!!3#L,Q" +!3Hf1XL*[!JK$kIGk)$`!!!%!SLjJ+N(YME)LE`))3qRhHL!m!!!"!+)ZB"4"lC! +!XL*[!JK$kIGk)$`!!!%!SLj96cmU!")r+J!8U3)3(fF@)'m##$&U!",bF#"[!JJ +aDJ!8q(TJ&#"[!JJaI!!"mR!JE`))-A`!#IKk6qm#!#4I,Tp1GC!!Bf&XBdC[Eh4 +PFP0`C@0c-3!!!#m+)'m!##&Yq*cbFL&Yq+$bGL4[!!K&k[*b)'f0VL"3-#J!$!4 +!!%)'3!!+0)!JEBfZ)&!eD!!-!!3NAbkI6R@1Bf&XBdC[Eh4PFNa[Bc)!!!")jai +`6qrb!%SYMCKR!!9k)'hiF#"35LJ!(QB!"@a&lC155&F[2!!+!)"1Z3!!!kK"l`! +%@%p$l`d!)$`!!!%!SLj++J!-Ca!JE`iF)Qm1($0SrqMrkQ"@)'m1(%*SrqSi,C1 +18d4f!@!S-%-J#&1!d)""lC1S)Qm1($)TrqV5F!J!)'m1($&"rqS-3hrrC`C53lC +%Ep3JE`iF)Qm1($!TrqV3D2rS)'m1($&!rqS-8J!(CL!`EC11)!K6J1')3Hf8F0( +!)Qm1(%2TmRSJ2!!!!3#L,JaU!!F!!QBJ-'f6ML!)8i$KL%(YP($4`#*[$Ka$kI0 +k)$`!!!%!SLi-DJ!(!!4Q)$"YNiiJ#&1!iBK"lC4`dF!LE`iF3qRdHL!m!!!"!+) +Z$'S!"`!'CL!`EC11)!K6J1')3Hf8F0(!)Qm1(%2TpASJ2!!!!3#L,JaU!!F!#'B +J-'f6ML!)8i$KL%(YP($4`#*[$Ka$kICk)$`!!!%!SLi-DJ!(!!TQ)$"YNiiJ#&1 +!iBK"lC4`dF!LE`iF3qRhHL!m!!!"!+)Z$&)!"@C'5'm"!#"[$L!r+2rU6VN!!!, +i@%p)E`%!5'hr&%K[$3K)E`F-2c`!!dkj!!!!i%(["a*2l`!5)Qm1(%2TmRSJ2!! +!!3#L,JaU!!8!!QC'5'm#!#"[$L!r+2rU6VN!!!,i@%p)E`)!5'hr'%K[$3K)E`J +-2c`!!dkj!!!!i%([#"*2l`!5)Qm1(%2TmhSJ2!!!!3#L,JaU!!8!"'C'5'm$!#" +[$L!r+2rU6VN!!!,i@%p)E`-!5'hr(%K[$3K)E`N-2c`!!dkj!!!!i%([#4*2l`! +5)Qm1(%2Tp(SJ2!!!!3#L,JaU!!8!"QC'5'm%!#"[$L!r+2rU6VN!!!,i@%p)E`3 +!5'hr)%K[$3K)E`S-2c`!!dkj!!!!i%([#K*2l`!5)Qm1(%2TpASJ2!!!!3#L,Ja +U!!8!#'C'5'm&!#"[$L!r+2rU6VN!!!,i@%p)E`8!5'hr*%K[$3K)E`X-2c`!!dk +j!!!!i%([#a*2l`!5)Qm1(%2TpRSJ2!!!!3#L,JaU!!8!#QC'5'm'!#"[$L!r+2r +U6VN!!!,i@%p)E`B!5'hr+%K[$3K)E``-2c`!!dkj!!!!i%([$"*2l`!5)Qm1(%2 +TphSJ2!!!!3#L,L"[$K`r+2*`U)FJE`iF2bMiHUL+2c`!!DL*98mJE`iH5'MbHUL +--"mf!&92)'m1(NKSmhUSM$!I2!"96b"[$Kj)D24kU)``(cS!98mJE`iH5'MeHUL +--"mf!&92)'m1(NKSpRUSM$!I1!"96b"[$Kj)D2GkU)``(cB!)'f0VL"35'J!#+K +l*Qm1(%IVmR)r+`!#)'m1(M!6d'MiHMm!U*-JE`iF5'MbHUL%-'f6M#!)i)MJL1# +)lSM3L1+!-'X!!Y#)-%BL#1#*i)RJLHk*dSMLJC!!J6m!)'m1(M!6d'MiHMm!U*- +JE`iF5'McHUL%-#X!"T!!46m!)'m1(M!6d'MiHMm!U*-JE`iF5'MdHUL%2bX!!L" +[$Ki`+2Kkd%$38dM!)'m1(M*Sq(SL#H#*i)RJLHk*dSRLJG+!2`'SNb"[$Ka)D29 +kU)3`EC1-)!MJL1#)i)MZL0#)iS!`D`!#d)J`4#))i)RJLH#*lSR5L1+"N!#"2`! +JE`iH-#MiHY"!d&0)`#"[$KibD2Kk)JRJLH#*i)RZLG+*iS(5J$m"U*-JE`iF5'M +fHUL%-#X!"T!!3cm!)'m1(M!Sq(V330"65-!JE`iH-QMiHL)*i)RJLH#*lSR5LH+ +"dS!r!DL6)'m1(%KSphUSK#C[$Ka(kr*b5LS!$QFU5LS!%'F)5'f-DULGB!C)EBa +bU*dr+`!#2a1SNcmV!!Br%kL45'f-FULG6qm1!%cI$(JZRdjeM("bD@jd4Qp[G'9 +b-`!!!%MR(`"2lr*SU&"+,IcQCJ41Z[AZ5LhmjQF!"d)-E3!"Nj!!CL)II!!""LK +f!Q!3-%-J#&1!3Hm'+%)`#!"53`a$!'4[kQ!398p)E`BU6VV`i"!IC`!(#$JYNj! +!GJ&J'M"$)!K6J%(["LK+-!J!C`)k!`a$IrpR"P*$YN4[iLmmb!!!!+Mp98m[2,S +!!!#Sr6!ICJ!'`P92,bf0VLmm-J3%L+Mp%"pR!!DZ)'hiI#m3U&&96bmmZJ!!!+M +p-"pQ!!B+,bhmiUKc2ff6MJ!%98m[,IL%U@!`(cp!!!BJEILB)&![D!!)!!J[D!! +-!!`JEILB)&![8!!3,fJ!"!!8@8mr2!$)5(J!!%KirrqTI#"I,dJ,M%K[#ia)H!! +&(c`!!8kj!!!$%#mYr1*#*kN),bm,M+Kc)'f0VL"3$#J!!3"%CL4)E`Z8,c`!#!# +!6VN!!!1S3Hm,Q&K23qm(M#!m!!!"!+)ZB#*)E`Z8,c`!"`#!6VN!!!1S3Hm,Q&K +23qm(M#!m!!!"!+)Z5'm(M%KYN!#b5'f3!,*)EC!!XUQ,,bm,M+Q"@8m[,BfZ5(J +!!%Ki!!![2!3!$!#Sr5"I,dJ,N!!q"A`"B!!%IMY'Nij+,C1HCa3`EC11)!K6J%( +["LK+-!J!C`!"BLm[#ibSFdK[#j3[2!!*!)"1Z3!!!kK"l`ZB@%p$l`b8)$`!!!% +!SLi`EC11)!K6J1')3Hf8F0(!5&")EImX5'm,R#mm!"X!J%kj!!!$U&K25'm,R%K +[$+")E`LF2c`!"%kj!!!!i%([#+*2l`!@3qm-P#!m!!!"!+)Z5'm(M%K[$*K)EC! +!XNKYN!#bUBX[,`Z-UB%[,ILB)&qJ+5"Yq*JJ8#&Yr1)!8LmYq*JJAk!U,bhmiUK +c2bf6MN)R6VN!!!,J6VN!!!)J,bhiQ#"IS#NJEILB)&!JVILF)@hiS!!%)'hiQ#" +3)@hiR!!))@hiS!!-)'hiQ#"3-$`$k0"S!!iJEILB)&!a3!!1)'hiQ#"3-#J!#J4 +!!qJJEILB)&!a3!!+,bhiQ#"IS#S[,ILBUG!JEIK`)&"+8'm56VN!!!*!6VN!!!) +`6VN!!!)i6VN!!!)S5'm0V%kkmcC)E`fX6VVfc$"YNiiJ#&1!3Hm'+%S`#!"R!!, +5-'f6ML!)8i$3J%(YNkJk-!J!2h`!!3f8B!!#R#m[#ibSFdSYNjjR#$p[$C30PQ! +q3Qm0PMJYNij64(B"B#!`3b!)8i$3J%(YNkJb,`f@dR!)!$p"$CB-3hrrC`C53lC +%Ep``,`f@d'm0P$p!$CBJEBfZ)&!-+!!"!%4Q*%K[#j3[2!!'!)"1Z3!!!kK"l`Z +B@%p$l`b8)$`!!!%!SLjJ)NK[#j3[2!!%!)"1Z3!!!kK"l`ZB@%p$l`b8)$`!!!% +!SLj)E`Z8,c`!#J#!6VN!!!1S3Hm,Q&K23qm*M#!m!!!"!+)Z5'm'M$m[$CT1Z3! +!![KB6dK["Sa)EImd5'm)P#mm!"X!J%kj!!!$U&K25'm)P%K[#CK)EIm`-'f6ML! +)8i$KL%(YP($4`%K35'hr,NK[#l![2!!E!)"1Z3!!!kKB6dK[#l")E`bd5'm+X$m +m!!P1Z3!!!1""l`Uf6qm!+N2[$*3J2!!!!3#L,NK["ia)E`bB5'f3!,*)EC!!XUQ +,,bm,M+Q",bhiF#"IS#PC6c"[$CJJ#&1!jBJJEIK`)&""k%&)FJ(5F!J#5-%[!6" +[$C`J#&1!jBJJEIK`)&""k%&)FJ(5F!J!5-%[!5mYq*Jr2!!*U$dJ(cB!,bhiF#" +IS#S[,ILB)&qJ+5"Yq*JJ8$!S!!M33b"Yq*JJ8$&!!!`JEILB)&!KE`Z3!!"5,bh +iQ#"IS#SJEILB)&![+!"5U(0)EILFU(X[,ILBUGN[,`Z3!%Ki!!![2"!!#!LSr5" +Yq*JJ8%KS!!J[,ILBUG-JEIK`)&"+8'mB5'hiR#"Yq*JJ8%KS!!JI2!!"6VN!!!* +35'm0V%kkp*B[,`Z3!#mm'!!%$+Mp,bhiQ#"IS#NJEILB)&!KEIcL!&)[,ILB)&q +J+N*R-!0%3$m!,bhiQ+RG$'prr`f8C`a5E`f8ZQm0P'`!r@"96bmmZJ!!!+Mp-"m +-3!#!Cb"96bmmZJ!!!+Mp-"m-3!#!C`i-4RrrC`K54Va(E`$lJ#m[#j!!,c`)!!5 +%U2dJEBfZ)&!-+!!"!%4QDP92,cbk!!!!U2d`(fCF,bm,M+Kc5'm,P#mm!!8!J%k +j!!!$U%([#jKB6d2["i`J2!!!!3#L,NK["ia)EC!!XNKYN!#b5'f3!,+TLbm[#ib +TJ5mYMDj)H!!!5(J!!%Ki!!![,`!3,caJ"45!U2d[,IcLU(-JEIcL5'J!%+Kl,bh +iQ#"IS#NJEILB)&!KEIcL!&)JEILB)&!KE`!)!!JKE`!-!!`JEILB)&!JV`!3)@m +!&!!%,bhiQ#"IS#Sr,`!%3LG1Z3!!!Z![,IL%2bm!#UPM6VN!!!*B,bhmiKmm!!' +T##m[#ibTJbmYr1+T(bmYr1+SFbmYq*LTf#mmd!!!!+Mp6qm0Q%cI!2K1GBG%6e" +558j8!*!&0%"@mE$XSBk(ZSZIld&RIib`NSe$+d'&fC!&30(CN!9#I%+[I`RQiqr +ZIbINIlrZ3Djqc8*ZIEq$[)1$Jd#,3,e!Z3#3#J&`!C!!!!)!!!'3!!!!!@")jaJ +!6qrp!&92,bhp#+P3-"p63$J!GJ&J'LmYr3K96bmYr3LT8$!I2`#T8Ja$IrpR"P* +$YN4[iLmYr3K)EIpdU6-i,C13!(B"B!!!P!a$!!TX0NKA2`01Z3!!![KB6dKA5'h +rGNK[!3Jr2!!#6VN!!!$J3Hm"$Nr[!!j$l`)!)$`!!!%!SLjJ"Mpm!@%#!#mYr3K +)E`)%U6-[,Id)-!083$m!-%-J#&1!iBK"lC4`dF")8+P(,bhmq%KYrhUT-bmYr2J +r!c"$)!K6J1')3Hf8F0(!5&#T4`a$IrpR#&*$YN4[!2pU6qm$!%cI!"K1GBp$8N9 +"9%9$5%&3689199-!!%r[rZ`JE`%B3qm!&(!r)YK4b2rm98p)E`!@3QG)E`!+6VN +!!!"i-"mqJ%TA9m"%!"p!!"-IE`!6!4a2l`%8,Tp1GBp'98a-8%&85&p&@%P69&- +!N!8$XSY!@J#3#JL+!B!!!J!!!B!!!!K'51FB)%r[r[iNE`%5)'m"'N2[!!*`2b, +B8FMrr$"5*JKi!"J[!!*)a%U%EbKC6bm[!4S[!dK[!!m["%Ki!!")H!!"UH!J(bB +!98m[!kKV-"mdJ'!%0,crr`a5rrpH`%3!(d!!!4p[!!%"(Nr[!3*-h`3B)&p2l`! +-6Y#%4NP14!!!!%MR(c"2lrm!*Qm"*"km!2m[%b"IS#PC6bm66VN!!!"3)"mZ!#" +6*K!N3bSm!!!!rb!()M`!!!$r6VN!!!9U2!"i!@!q,`T)E`!&,`8J(b*I)&qJ,NK +A3LG1Z3!!!&K)E`!",`S["5!I)PmJAk!Z)$`!!!$rd)-Q!#4$$%4rrfF'8N5i4Qq +q)!FL2!!!!2p1Z3!!"HJU!&92,`@SDc!IFJ!b!"k",`T)E`!&,`8J(b*I)&qJ,NK +A3LG1Z3!!!&K)E`!",`S["5!I)PmJAk!Z,bm")%)R6VN!!!"B,a-JAk!U6qm"!%c +I$2JJAe"26Y#*980"8d9)6N4-!!")jaik6qrqj#4[!8SXE`&'+'m"3NK[!!+SG#m +Yr1+SFdIYM)`J5d2[!"JJ2!!!!3#L,L"Yq*JJ8#pS!$i"'&925'm"'Nkj!!!!U$! +I0J"++`%!CJa)E`%B5'm!(%kkrUJ`8LB)1+f6MP925'm!'Lm[!4i[#NkkrJi3(aJ +!5J4Q)%SV!3&Q'NU$EaC#8P925'm!'Lm[!4i[#NkkrHS3(aJ!,bm"'#"IS#0+"'B +!!)T++`%"C`!!JM!YNik`EC13!'afI!(FEC111Lf6N!!f"Q"N2bf4q+QB1!064!C +%!)"C6bmYrh`r"+JI)&m[5!%B,bm"'+Q55LX"!'B-5'm"'%K[!"a1Z[i%3P*96dK +[!"S[,`%H,`T1Z[e`%"mB!#m[!4JJAk!M5J4R"$L$B!`-3hrrC`C53lC&EjK+"'C +f5LX"!@G`1Lf6MRB"B'3r,C(iUCJi!e0%"N3!J&P2,bhrJ$m%U"mJAbp)!4J[,`% +BUC*++`%!CJa)E`%B5'm!(%kkrBT#8P925'm!'Lm[!4i[#Nkkr2B3(aJ!,bm"'#" +IS#0+"'F%1)0J$!a$IrpR"P*$YN9[Q%S%C`!!T$!8X'f6MQFH5Lf0T@F),bhiJ$m +8U@-r&%)R6VN!!!,J6VN!!!,3F!!3,`!Bd&)mJ$"5,`J`9Lm),bhiQ+R45Lm"3'G +H,h`rrXc-!!B[I-b3"!!+2hc-c3!15'm!"Mmm!!)[,ILB,bhiK%kj!!!#Q%kj!!! +#@#"Yq*JJ8#pS!!J!%#pS!!`!&#"Yq(!J8%T3Ea")E`!35'm!&%)R6VN!!!*3(d3 +!!5m[!!+SFap[!!%"6Nr[!4a-heai)&p2l`!16Y#+4NP14&088NP14`!!!%MR%#" +2lr[`U&"f!%K[!3#SG&P22c`"-NKi!!")H2rrUA`JAbp)"!`[,`3-U(-[,`3-5'm +#$#mm!"-!J%kj!!!$U&K25'm#$+ND5'm%$#mm!"i!""mm!!&1Z3!!!a"&lBb-5LS +"!'F@,bm%$#mm!!3!"$mm!!41Z3!!!j!!B"3[,`3-,c`!"2qF2c`!"%kj!!!$N!! +-E3!#Nj!!E")[,`3-,c`!r`!&6VN!!!0!B$"++J%"CaB[,`3-,c`!"3!&2c`!"8k +j!!!$N!"J&#m["!`[2!!&rj`r2!!&6VN!!!13!#m["!`r2!!$,`T1Z3!!!c![,`3 +-5(J!!cmm!qLTIP92,`T)EC!!XMmm!!&1Z3!!!0J3(fFD,bm%$%Ki!!&1Z3!!!d! +JE`3-F!%K3!#BB"J[,`3-,c`!r`!"6VN!!!0!)'m%$%+S!*K)H3!!!eK)E`--UC% +`,`-)6VN!!!B!!L3!!3(e!!B!!3#)!!)!pJ!$!2J!"!'8!!8"cJ(d!!B"p3!S6VN +!!!,)5Lf0QQF3)'hia%SS!'jR"Nkj!!!###m["!bSFf!!!G`[,`3-U(-[,`3-U5) +[,`3-UB%[,`3-6VN!!!0J,bm%$+NM6VN!!!,)5Lf0QQF3)'hia%SS!'jR"Nkj!!! +###m["!bSFf!!!C3JEILB)&!rD!!L!`T)E`)),bm%%$mm!!01Z3!!!cK"l`)-@%m +L5L!m!!!"!+)Z)'hiI#m3U&&96dK[!`a)E`%+5'm"%"mm!!&1Z[Y'%"pR##mYq*L +Tf'!'2c`!"DR),bm%$%Ki!!-r2!2SUAkS8'!!!5*f!@!!!4a)E`%),bm%%$mm!!0 +1Z3!!!cK"l`%-@%p$l`--)$`!!!%!SLj96dK[!`i[#Mmm!!&1Z3!!!0J3(fF!!1" +#Td+R,bhiQ+R43Hm$$#*+)$`!!!%!SLj96bm+5'f3!,)r2!!"6VN!!!$B%"pR(#m +["!a)H!!"6VN!!!0!)'m%$(!")8!!Q'!!!*B[,`3-,c`!r`!"6VN!!!0!)'m%$%+ +S!*KJHK!U!3"A`%3!&8!"!%SU!3"R&Lm["!`[2!!%!!3r2!!%6VN!!!13!'"5,bm +%$#mm!!6rR$mm!!41Z3!!!j!!B$`3+J%"9m"%!"9!!3&++J%"CaB[,`3-,c`!"3! +&2c`!"8kj!!!$N!"J&#m["!`[2!!&rj`r2!!&6VN!!!13!%S$C`$p`NKA,bm%%$m +m!!01Z3!!!cK"l`!%@%mL5L!m!!!"!+)Z,bm%$+Q$,bm"!+Kc6qm%%%cI"!K1GBC +%6dC*6N3!!!![#Nr[rrBNE`!55'm!"+Kd)'hiQ#"32fJ!)J!))'hiI#m3U&&96dK +[!!T)E`!'5'm!$"mm!!&1Z[Q!%"pR$#mYq*LTf"5m!!&J$%S5CJBr2!!&UFK#%UK +3,bm!"+Kc6qm!#L4I,Tp1GBY%6dC*6N4"4d&*6J#3"5C!98"GmY"!Fd$'Jk@$PVL +13Brel29qf[AQp8%qmAm`mXDK31lSIcUH3%(FVpb631TrFFS!!!!$3'5V3L)!N!B +#%J%S!!%!!!%S!!!#"&92)'hiQ#"3)QhiQ#*4-#N!)T!!D!!J2S!r9`!'9%p1GC! +!4d988d9-480858p18dPD43!!!&&2)'hiQ#"3-QJ!)#"Yq*JJ8#"S!$iJ%0#*,S! +[9`!%,fm!"!!-8%p1GC*(494648a&3e4&4&4&@&439&)!!!")ja!`6qrriL"[!$* +$eb,B)YJLf#,B@8qSf#"I*%J[,`!Z,`USh%K[!"*#TkL!5'm!%UK`,`Sr,`!B2bm +!'+MJ98m[,`!-F#1Vl4!ICJK#,`!4B!!"%&925'm!'(!&Uqd`(cB!98m[,`!B5(J +!!5mYrkaC6dkkrdSJAbm)98p1Z[m--"p)`#m!3UG`"k[Y-"mf!&P2,bhiQ$mm!!D +S25"I,dJ!'Lm[!"SJAk!T98m[,`!B5(J!!5mYrl!JE`!S,a"C6bm[!$"1Z3!!!&! +J(bm!3UG`"k[Y-"mf!#m[!"SJAk!U,bm!'L"IS#096bm[!"K)H!!")&*)D!!#F"D +Vl6!I0J"C6kMB)&mQ5#m+,`ZSh#m,,c`!!3!"U1%[#Lm,,`USjLm,U0P96bm[!"K +)E`!',`T`$D[Y-"mf!%T$C`i-3rq!C`JII!!"!"&J'&92,bm!'(!'Uqd`(cB!,`U +Sf4pm!!%!%4p[!"%!0Nr[!"j-h``))&p36dl3L%4538G849K8!*!'!8#N!*!+'KX +!m!!(!!!!m!!!'8j96bmYr1+SFbmYq)4#CkPG,bhiK+PY)'hiK#"35'J!#+NU5Lf +0SfF898m[,IL8,bhiQ$mm!!qS26!I2S"+,BfPCb)-E3!"Nj!!EaS[,IL!3QHTA5m +Yq)#TE5"Yq)!J8%KS!!LT+L"YMC3J8%SS!!PR#%kj!!!#U'!)3LG1Z3!!!V"86dj +eP%&$9%P@394&8d056da-9dP14%pA!!!!,bhmiUKc,bhiK$mm!2qTA5"Yq)3J8%K +S!!LT+NSYMD9R(JaY!!'6N!"[&LmYq)!r2!$rU9dJEIL!)&")D!!)U5SJEBf8)&" +++!!*C`K1Z3!!!UKJ#Kmm!!&1Z3!!!V"1GCC%48&$9%P@394&8d056da-9dP14%p +A!!!!51FF)%r[qriS,`3@5S4R!!*598m["+KU-"mk!&92,`5SDc!I0J!`"90!CaC +63'F!!)T63'F!!A"63'F!!C4J!!)H$%-!!f`16VVr2%kj!!!$J'!!!JS[,Icm2`0 +)E`-)U8C96dK[!`5TYM!I0J"96dK[!34)E`-)6VN!!!-!@%p)E`%%2c`!!R!!%#m +$#P0!2`")E`)-6VN!!!$S5'm#"%KYrl4#Cdkj!!!!f"!IC`!"VN)Yr1CJ!!'Q4Hh +mkVC5CJj1Z[l#6VN!!!)3B!!"N!#fDJ!#CKT1Z[kZ6VN!!!)B5LhmjQB!!AK1Z[i +!B!!"F,CU!!4Q%%kkrSj#*dkj!!!"-'!!!9UfDJ!'CLT1Z3!!!B![,IL%U@e+,Bf +PC`i-E3!"Nj!!E`B[,IL!U@e1Z3!!!Y"J!!%UYQS!#'BB3Lm"!8K[!3&1Z3!!!BK +1Z3!!!Y"J!!%-YQS!#QBk6VVq+NK[!3)[2!!#!)"1Z3!!!kK"l`%'@%p$eb!m!!! +"!+)Z(c`!!8K[!!*)E`-)6VN!!!&!B!!!c,CU!!aQ!!$%'h`!!IcRB!!!ZP92-!0 +63$m!UF)3(fB!!+S-3`!%CJ!!SPP2UI`J(bB!,bhiQ+R9B!!!N!!-3`!"CN"+,Bf +DCcTC6kNN)&qalIM%CJi[,IM%U4B[,IL%U@eJD#mYq-5T&5mYq-5T(bmYq-5SFbm +Yq-#TE8kj!!!#d'")YQhmk'e#-!13!'hmk&*!X'f6MQFd5Lf0T@F5,bhiJ$!Yr1K +63$)$NN!r!DPM-#hmk&0!-J153$m"(c`!!8kj!!!#i%kj!!!#d%*RU6K2l`3#60m +%1#kI6R@,8&*23d968de&6P8!!#m+6qrqp#"[!4K$l`!%F$mLf&()rra)9kKd4Hm +"&%K[!33r+J!#2a)`2!$)d'S!!Mm!F'638Mm!U+GC6dKi!!")E`%-5'hr[%)R2c` +!!dKirrp#*d+RU4-JAb4),`USFcmm!!'SKcmm!!QSLLm+,bm"'"mm!!&1Z3!!!`J +[DJ!3!33[DJ!8!3K)E`%%,c`!"3!&U+P)E`!&F!!3,`!)5-![!%K[!3a#CkR16VN +!!!-B,`UT&#mAU(02l`%-*&mJAe"26Y#+4%p65%pA6Np843!!!%MR'#"2lrl`)'m +")%2AF$mLf&()rr`[EIqq!3K#V`%-,fhr`J%!3Um""&P2,bhraLmYrmT`)DJU)&m +N5(J!98m[,Ir15'm!"h!!%#m!#NM!,`")E`%@-$`)*DJ@-"mf!&P2,`T)E`%3,`3 +[,Ir53UG)E`%B,c`!&!B$F!#S+L!I0J![,`%-)&qJ)e925'm"#M!m!J5S&M!I0J" +96dK[!3)`2!)%U"B`(cB!6qm"%%cI""JZRdjeL%428d0559"8!!!!98mJE`!'5'M +rb$!m!J5S&M!I2`"8Me92)'m!"NKSrp!`2!)%U"B`(cm!9)p96b"[!!C)D2r!-$` +#"+J@-"mr!&52,Tp1GBK$E'9KEP9`-!!!!%T[!!KR*L"[!!3aE`!)rVi[,`!%6VV +rQ$mm!!'Tb$mm!!'Tb#j[!!41qJ'd)&pF6dl3L%CKD@a&FR)a!!!!6qrqUL"[!9T +$l`!@F$mLf&()rr`JE`&H,e!!"#pS!!3!##pYrpB"(N+[!5)[EIrD!5C#V`%U,fh +rhJ%@3Um"'N([!5l3r!!S51!r1P92,bhriNK[!A")H!!%5'm"*$!m##@S&M!I2`" +)E`&B6VVr9%([!5l3r!!S51!r1P92,bm"D#m[!@K)E`%J2ccrrd+R5'm"-M!m#a5 +S&M!I2`")E`&B6VVr(N([!5l3r!!S51!r1P925'm")#mYrqB[,IrU5'm!*A!!%#m +!+%M!,`!`2!S2U"B`(cm!5'm"@%kkrZ4"l`%Zd2`!+%MJ2cT96dK[!5")E`%X5(J +!!d*R5(MrrdKi!!")H!!!-$`0&kJ@-"mr!%K[!9K1Z[kU98p)E`%S,bhrlLmYrr* +)E`!D5'm!%NKi!!4)E`!U-$`1%DJ@-"p"l`%Zd2`!+%MJ2cT96dK[!5J[,Irf,bh +rqNK[!"S[,`'!5(J!"%K[!#S`2!i4U"B`(cm!5'm"@%kkrNK)E`&@6VVplN*[!"4 +96dK[!!Br2!!lU)m`(fF'2c`!!DR)B!a2lrkU3Hm",NcBA2`rE`!8!A*2l`&@)&p +2l`!B6Y#)389648j%388!!!")ja`J6qr`SM"[$h)J#&1!)M`!!!%56VN!!!6D)'h +iF#"33HJ"%0(!3qm,+("$)YK4b2rm-YK&l`XS)%T"k!!5,dJ29PP2-'S!$Lm)6VN +!!!$))"m-3!!3BJ!'VY"!-$X!"Nll!!)'SJ#`!aJ#%J)d"#`!)J-Q"6`&iJAd"P! +'GJ)q!C`"f!,N98p1Z3!!!9!3(fF'6VN!!!&B98p)E`pB6VN!!!2)-"mf!&925'm +2@%kj!!!$b$!I8d"A`%3!'!"+,BfJCa"C6cmm!)#U'b"I,`LU('!1@8mr2!#!UEN +JAbm3U&%r!amm!!%I"%kj!!!"H%S%C`!'%Nkj!!!$'&926VN!!!&3%"pR!!Aq6VN +!!!&BB!!&p&925'm2@%kj!!!$b$!I0J"96dK[$eK1Z3!!!mJ`(cS!5N0[!!A1YQf +6N!"Z!!A'YQf6MPE!4!!B!%S%CaT+,BfPC`J[,IL!2`1TBcm$(c`!!8kj!!!#i%T +&E!C+"'B!!)496cm&,bhiQ%kj!!!$H$!I1J"C6cm&,bhiQ$mm!!LS25pI!!J[E`! +)$eT96cm&,bhiQ%kj!!!$F$!I0J![,IL%@8p`!G"$5-![!(!"d%0)`#m!,bhiQ$m +m!!QS25!I,d!!"&92,bhiK+PJ-"r3E`pH5-#3!+m!"&@!2`#TBdkj!!!#@%kj!!! +#d'!!"3J`,C11X'f6N!"X!!6m5Lf0T@F1,bhiJ(!"d'f6MMm!U@0`!G"YNiir!"m +m!!&1Z3!!!Z"1Z3!!!Y"J!!6-$'d!!C11E`!%`NSYMD9R$LmYq)!`,C118d!r!+P +M-#f6MP0!2`!I2!!"6VN!!!,J6VN!!!,3B!!%NNSYMCaR!!5+6VVfQNkj!!!#'%S +Yr1CQ!!4i6VVel'!!"(!EI!!"r1GJ!!4Q@8p)E`pD6VN!!!23,em!$#p[!!`05PP +25'm2@Nkj!!!$d#pI!"![E`!3$$TC6dK[$eT1Z3!!!p![A`!8,fm!&!`q5'm!'%K +[$eT1Z3!!!lK"l`!F@%p$l`e@)$`!!!%!SLj+,BfLC`!$r&92,bm06%K[$%K1Z3! +!""!3(fF!!qC96dK[!!B[,`e3,bm-4#m[$%a)E`a85'm0E%kkq[B`(cB!B!!$`%K +[!4K)E`pD6VN!!!1i3Hm"(&K23qm19L!m!!!"!+)Z)'hiI#m3U&&)E`j@6VVjE'! +!!ia1Z[@F6VN!!!1!B!!$INSYMD&R!!$f98p1Z3!!!9!3(fF'6VN!!!&B5'm#'%K +[$eT1Z3!!!lK"l`)F@%p$l`j@)$`!!!%!SLj96cmU!!B[,ILB6VN!!!0`-"mf!&P +22bS!"LmYq*Jr2!!)U$d[A`-B,fm$'!pD98pC6h!"d%0)`#m!F!(33dM!,`![,IL +B2c`!#DJp)"m`E`pF)JL5J$m"2c`!+%kj!!!$Q$!I2d!2@Mp5$ea)E`e12a)r,`p +J2bS!!M![$f63DJ!%2`#STdK[!aa)E`e56VN!!!,`,fm$)!e5,fm$*!e@5'm2AUK +`6VVdVNK[$PSr,C(f5'm0@%kj!!!"S&K2B!!#JMmm!!'Tb'!!!RK)E`-N5'm2@Nk +j!!!$Z%([!bKB6d2[$PBJ2!!!!3#L,P925'm1@%kj!!!"Q"!ICcC)E`3N,c`!!J# +!6VN!!!1S3Hm%+&K23qm09L!m!!!"!+)Z3LG)E`eB5'm1A%kj!!!"3'!!!K)r2!! ++UFK)E`NN,c`!'J#!6VN!!!1S@%p)E`NN5'm)+#mm!"N!J%kj!!!$U&K25'm)+%K +["ba)E`jL6VN!!!2J@%p)E`FX5'm'-#mm!"J!J%kj!!!$U&K25'm'-%K["63[2!! +8!)"1Z3!!!kKB6dK["64)E`aH2c`!"8kj!!!!i%([$'42l`!D3qm09L!m!!!"!+) +Z(c`!!8K[$9K)E`jF6VN!!!&!B!!"D%K[#L4)E`pD6VN!!!1i3Hm++&K23qm19L! +m!!!"!+)Z98mr+J!',bhiQ%kj!!!$F$!I0J"C6cmU!!B[,ILB2c`!#+Jp,em,*#p +[#b32@P92@8p`!G"$5-![!(!"d%0)`#m!,bhiQ$mm!!QS25!I-'m2A#))NS!r!6m +m!#K1Z3!!!jJ`(cp!$eSr8JpF5'm2@UK`6VVbjNK[$PB[,`pH6VVed'!!!-*1Z[, +5(c`!!8kj!!!"-'!!!,"&lC(k5P*[!!#Q-&)J#&1!jBJJ5P5)2c!)!%)R6VN!!!, +J5Lf0T@F+,bhiJ$mYNikTBdkj!!!#d#mYq)3`8L!)8i$PL#"+9)Jr-!J#U@01Z3! +!!PJ`%P0!0)"J8NSYMCTR6#mYq-5T&5mYq-5T(bmYq-5SFbmYq-#TE8kj!!!#d'! +X5Lf0QfFQ6VN!!!'!,bhiK+PY5Lf0T@F1$'d!!C13!'m',bhiJ+PY6VN!!!,36qm +2ANcI"$JJAe426Y#25%&14%a&8%P$9%0-580,!!![!hB!-#m!#!4!!"4R"P0!Ca* +J)!aY!!'6MQmB0Lf6MP0$B"!`,C11X'f6N!"X"RB"eQf6MNT$Cb![,`!+2`1TBcm +$(c`!!8kj!!!#i%KYM"DS88kj!!!#d#BI)&pF6dl3Le0$8Np-6%0)39"6!!")ja` +J6qrqb#"[!8a$l`%B)YJLf#,B)YJ[E`%L!6"96bm[!6*)E`%kU5``(cB!-!--3!! +)BJ!'f0"!-$X!"Nll!!)'c!!5!#B!0!A#"!B'!!C+"NTC6bm[!65T25!I,`"1Z[' +HB!!'U%K[!4J[,`%iUE0J!!DD@8qT*#"IXHm"0'F+,bm"0+NIB!!'K#"[!65alIc +LCJ!$CNSYMCpQ"LmYq*LTf8K[!6#SF992,bm"-Lm[!6T)E`%HU@``(cB!5Lf0T@F +!!Hi-E3!"Nj!!E`!"j#"[!45alIL!CJ!"f!a$!)&Q@#"Yq)!J8#"S!"`J8#&[!6! +!5P92,bhiJ#m[!6C)H!!!U@J`(cB!98m[,IL!U@!`(l"YNijR!!Af98m[,IL!U@! +`(cm!(c`!!8kj!!!#i%kj!!!#d'!!"GB-3`!8C`B-3`!9CKK96bmYq)![,`%f5'd +"!+PS-"mf!'!!"E*96bmYq)![,`%f5(J!!+PS-"mf!!a$!"jQ-P92,bhiJ+PJ-"q +`EC11C`!&KP92,bhiJ+PJ-"mr!"mm!!&1Z3!!!Z"1Z3!!!Y"J!!9Q$%-!(fBS5Lf +0QQFL,bhia+N9,bhia+NI,bhia+Kc,bhi`+PY6VN!!!,3B!!&1!a$!#*QANAYNIT ++8Qm!"5J`8L!)8i$PL#"+9)Jr-!J!3LG1Z3!!!Z"+,BfPC`S[,IL!2bf6MUPM6VN +!!!,3,bhiK$"5)!K6J1@))%T8L$m`#!+TBdkj!!!#@$!58d!dJ'!!"03-3`!JCM4 +96bmYq)#TB$!I$%!!!@m!",`[,IL!2c`!!DPM2c`!!4mm!!&1Z3!!!Z"1Z3!!!Y" +J!!5D$%-!)@B!"**96bmYq)#TB$!IX'f6N!"X!!5!,bhiJ$mYNj!!U@-r,C13!"m +m!!&1Z3!!!Z"1Z3!!!Y"J!!4H)'m"&,(Yq)4Q%$m$,bm"-Nkj!!!#N!"J!!4%)'h +iF#"35P"[!!#-98m[,`%b5'm"'%K[!6*1Z3!!!NJ3(fGb-'m"%L!)8i!L2!!!!4* +1Z3!!"0SJEIK`)&""k!%3dF"$eh"$)YK4b2rm-YK&ee925'm"+L"Yq*JJ8%KS!!K +)E`%bU+S3(fF!!pC96dK[!5T+DJ!1AX"%!"m!6VN!!!03%"pR!!1k2bm"%Nkkp3j +J!!1Z5Lf0RfF!!kB[,ILBUGK+,BfMCd496bm[!6)[,IL8U1J3(fFd98p)E`%D,bh +iP%kj!!!"+"!ICMi[,`%`F!!`,`%U!S!!!!)!5S"@`%3!(`![,ILBUG4J(Lm[!6" +`!$![!5S#J!!!!J"+J&E!4!!I!#mYq*LTe%SYMD0R&&92,bhiP#mYq*Jr2!!2U$d +`(cB!6VN!!!,BB!!$&%SYMCTR!!--)'m"0,(Yq-4Q!!-!4Hhi[&925'm"'NKU!!j +)DJ!35'S!%Nkj!!!"k"!IC`!#hMmU!!ir+J!32bS!%Nkj!!!"U'!!!XKC6kNN)&q +al`%dC`S[,`%dU4pJ!!+b)'m"0,(Yr1*Q!!$')'f0P#"35LJ!#@F!!,JlI!%Bq,B +lI!#@q,4C6bm[!6J[,`%i5'hiY+NV)"mQ!%U$C`!#FLmYr1+SFb"Yr1*)D!!3U+0 +96bm$U'S`(cS!98m[!kKV-"mi!#mYr1)r"$m&(c`!!DNG)'hmiNKS!"#SHb"Yr1* +)D!!3U5K1Z3!!!RK1Z3!!!S"1Z3!!!QK1Z3!!!Q"1Z3!!!PK+,BfPC`C1Z3!!!R" ++,BfMC`!"qP92,bhiP#mYq*Jr2!!2U$d`(cB!B!!"iNSYMCTR!!(D)'m"0,(Yq-4 +Q!!(1,fhiY!%S,fhiZ!%X)'hia(!"d'J!&Mp!!5SJEIM%F!(3D!!@2d!",Mpm!*B +"+&P2,bm"1#m[!6K)E`%dU5XJ(bB!5S0R!!'',bhia+Kc)'hia%KS!"#SSe92,`1 +SDM!I1J"96bm$U'X`(cJ!,bhia$m%2`8I2!!"U4dJEIM%5'J!%+Kl)'hia%KS!"# +T+%kj!!!"d#mYq,bTd%kj!!!"f%kj!!!"b#"Yq-!J8%KS!!LT+Nkj!!!"Z#mYq,b +Tf'!!!3a+,BfDC`SJE`%dXHhia'F@)'m"0,(Yr1*Q'L"YMC3J8%SS!!KR$Lm[!63 +[,`%d5'hiV+NP,bm"0+NIB!!!cP92,bm"0Lm[!6DT(K!IC`!![#"[!65alIcLCJS +EI!!"r1GJ!!#S5Lf0QQF!!+!JE`%dXHhia'B!!*3[,IM%U4B[,IL%U@eJ!!#%98m +[,`%f,bm"0Mm$U$X3(fG`)'m"0,(Yr1*QCLmYr1+SFb"Yr1*)D!!3U+-[,IcL2`0 +C6kNN)&qalIcL9m"%!"m!U$SJEIcL5'J!%+Kl)'hmiNKS!"#T+%kj!!!#H%kj!!! +#J%kj!!!#D%kj!!!#B%kj!!!#@%SYMD9R"Nkj!!!#F%r[!6K-h`3i,Tp1GC*%48& +-9dP85%e2990&4%pA6P-!!!")ja!J6qrrl#"[!#"$l`!%)YJLf#,B)YJZV`!'GJ! +@,`!$@8p`!$![!"B[!%Ki!3#S@#!I$)!!!!%!CK*C6cm$U6iJ(bm!6VVUL'!!!D* +C6kNN)&qalIcLCJ!"8&92-%-[#%KYNE*)H!!J6VN!!!$3%"pR!!&k-!01Z3!!"J! +"F!!"!"m!"`!"!"i!"!!b!!X!qJ!-!3B!(!")!"d!L!!H!-S!(`$@,bhiK%*RU@0 +1Z3!!!PK1Z3!!!Q"J!!%b,bhiK&92,bhiK+PL-"mr!+PM6VN!!!*B6VN!!!*JB!! +"%!aY!!'6N!"[!!%'$'d!!C11E`!!r%SYMD9R$LmYq)!`,C118d!r!+PM-#f6MP0 +!2`!I2!!"6VN!!!,J6VN!!!,3B!!!c!aY!!'6N!"[!!$#-#f6MV"YNj!!E!!!YNS +YMD9R$LmYq)"`!G"YNiir!+PMF!(3EC112`!I2!!"6VN!!!,J6VN!!!,3B!!!KLm +Yq)3r2!!86VN!!!+)B(3[,IL%2c`!&8kj!!!#L'"N,bhiK$mm!"C1Z3!!!SKJ9#m +Yq)3r2!!A6VN!!!+)B%4+,BfDCcjC6kNN)&qalIM%CM*&lILm98p)E`!'5'S!$NK +U!"")DJ!56VN!!!(`%"pR%MmU!!ir+J!32bS!%Nkj!!!"U%r[!"4-h`3),Tp1GC! +!4%9"6&G*9%K,49P%6eG18`!!!#m+6qrrl#"[!"j$l`!%)YJLf#,B)YK"l`!%,SJ +J9b4S!!)[#UKc5Lm!('FJYHhmiQB'6VVRH'!b5Lf0QQFXYHhia'BQ6VN!!!(iB"k +elIcLCJC1ZZIdB"*+,BfDC`belIM%CJC1Z3!!!J"1Z3!!!Y"2l`!8*&mJAea26Y# +44%9"6&G*9%K"3e4*9N&849-!!#m+6qrrl#"[!"a$l`!%)YJLf#,B)YK"l`!%,SJ +J9b4S!!+elIcLCJK1Z3!!!XKJ%NSYMCTR$,AYq-4Q"Nkj!!!##%r[!"3NAbkI6R@ +24%9"6&G*9%K98%4"9%96!*!&Klq&YiDhPSq)N!#+NBK!TYYrR['-NT&!C%"3QN( +)3D9qYF9"Lhkfa%"-q-ViTSC#[hhjihqFM%)RI`*ql%+!ID9#L1RFII(MiN"'UIA +e3B"rH(q+dXk9Y8&1I`+CP*j!8rAVpH*!CRqVSU"!Ed"*3%D'39rLbY$)3,rLdYr +Tb%,QI`"qQ%",NV+MXCU-390r!%%$I`""!hm!330r!%%*I`"!C)D$L8$6Xqq8ld" +6hDEG3%6iq2L`Ll@3!)1RLJ!!!!0$dN8r3P8!N!B1MJ"3!"3!!!"3!!!1GL*I)&q +J*5k!DJ*#Pdl4)KmJ(b*I)&qJ,L*"6Y%LAa)I)&p`!"!B,`P+!@F%S&4J!U*86R9 +19[r1)%mKEJ!1!")aEJ!-!"C#+!!D3LJ!'d+S!"a`'U"J$%$rcQB#S!!LEJ!)-UJ +!'$e!!"*1AL"I6qm!#Nl36PErcL"2-@i!#!!BS!%p3!!+6PiJAe526Y"4`@!#8-& +19[r1)%mKEJ!)!#!aEJ!3!"JLEJ!-)9%!*%*S!#a#U!!Z5J&Q"+!#B!+J!ce!!") +LEJ!-)UJ!+%jH)Pp2l`!+6Y&19[q`)%mKEJ!1!")aEJ!-!"C#+!!D3QJ!(+!-28! +!%N(S!#!LEJ!)F"#J,NjH)Pp2l`!+6Y&19[r!)%mKEJ!+!")aEJ!)!"DJ&6e!!!j +1AL*IA)p1d8j@rm!J6c&Z!!J!&L&Z!!S!%U!628!!$NjH)PpFMdl46PErX#"2)@i +!%J!5-@i!%!!@3LJ!'U!)CKC#D!!FS!aQ$N2S!#!LlJ!))Ui!$+!028!!&NjH)Pp +2l`!16Y&19[r1)%mKEJ!+!")aEJ!)!"C#+!!DS!Np3!!16PiLAeb26Y%JE`!%)#m +!#%*RUHiJAe"26Y!JE`!%)&#Ti5*[!!3LL$p!!!JZRdje)"mLAbYI!"3L88(k!!S +M5!!U)%"1d%)R)'d!&%k3!"!I6R919J!!@8m[2&088L-r,J!+UD!LEJ!-3K%J(fF +L)%!J8$!B-Li!#'F@XN"L%R!!8d&R"K!BdF"JpK!38N#J,NjH)&p3Mdl3)'m!#!* +3IrmJE`!%5P"X##"[!!J!8)!!6R@+6AP$Eh"j8fPREJ!!!%r[rrBZV`!5,fm!&J! +%2fm!'J!)5&Fr2!!2UHXJE`!1)*FKE`!%!!3aE`!)!!K2l`!+6R@%CQ&LF`!!!%r +[rr)[E`!@!!3[E`!D!!JrE`!H!!a)E`!#2c`!!kRV2Va!!%KA2c`!!DRV5'm!"$m +m!"5TkdK[!!)r2!!"UHXJE`!5)+m!"#&[!!J!"$&[!!`!#%r[!!j1GB9QE'p[FJ! +!6qrrpLk[!")[E`!@!!3rE`!D!!K)9cmm!"5Tkb"[!!iJPb&[!!3!"$&[!!J!#%r +[!!T1GB4bD@jd!!!!6qrreN*[!#K)E`!S2c`!!DRV,bm!1#m[!$Jr,`!k5'm!+%k +j!!!$%%K[!$Br2!!$UHX),`!%!$C2l`!1Cfi[,`!i,bm!1$m[!$T)E`!86VN!!!* +b,h`rrS!!!!j#V`!53Qm!&NK[!"K)E`!52c`!!+RV,fm!$J!L,fm!%J!Q2fm!&J! +U5'm!)NK[!%41Z3!!!NS[,`!`,bm!-$m[!$*)E`!q6VN!!!+Z6qm!*#"[!#iJV`! +H)@m!)J!%-@m!*J!)6qm!+NjeKA*[G@jN!!![!dr[rqa#Pd+[!!4#E`!)5&G)E`! +J2c`!#+RVE#JZV`!F,fm!)!!%2fm!*!!)5&Fr2!!@UHY)9dK[!!3r2#J3UHXQ&f" +),bm!)Lm[!#)r,`!N5'm!&%kj!!!$6#p[!"J!$Lp[!"`!%Mp[!#!!&NK[!!ir2!! +@UHY)E`!15'm!%Mmm+"#TkbB[!!j2l`!1)!02l`!8*Kp1GBKbEh9ZC(4[E!!!!%j +@rf!`,J!)"%$lifF!!3"63'F!!*!!"%!%&fF!!Ua63'F!!Qa63'F!!Ia63'F!!Ba +63'F!!4a93'F!!Y"C3'F!![aC3'F!!aKA3'F!!d4C3'F!!h"G3'F!!kaI3'F!!pK +C3'F!!ra63'F!"&J%3!#SC`!'%J4!!'*R!!558d"R!!5m8d"R!!6S8d"R!!888d" +R!!8i8d"R!!9d8d"R!!@ZB!!'#Lem)%PZG[pJ,AaKE'PNrf3YI#"`EfRrD#emER4 +PF[pX,A`JF'&crh!YI(0PC#$rG#emG'mJ8[pi,AaPE'9Krh`YI(0P)'rrJ#emFL" +%DIq%,AacF'pcriJYI'8Z)#$rM"em!#rrB'!!"D3YI#"2GA6rB#em)'pQ)2pN,Aa +YC@e[rfJYI(*j)'ErE#emBA4KE2p`,A`JCA*brh3YI'pb,L$rH"em!"[rB'!!"@) +YI#")C@(rB#emF#"MD2pN,AaPBfXJrfJYI'CKD@crE#emC@3Z)2p`,Aa8D'8Jrh3 +YI&"KFf2rH#emB@`JD2pm,AaPBA!Jri!YI'Pc)'2rK#emEh*bGIq),Aa`G#iJri` +GI!![rf"J!!6i,A`J4'9brf!YI'9QCA,rC#emC@jMCIpS,AaN)'%Jrf`YI%j*6#$ +rF#emF'pTE[pd,AadCA)ZrhJYI#"@B@crI#emD@4KG2q!,AaP)'CKri3YI'PXC@6 +rL#em,L!J)2q-(A`!,IpJB!!%MLem)%4PF[pJ,AaPCQ9brf3YI'9ZBfArD#emC#" +K)2pX,AaLB@3Jrh!YI("[D@lrG#emG'9b,[pi,A`J9Q&Xrh`YI'PNBA6rJ#emC5" +QBIq%,AaTE'9NriJYI#iJ)#$rM"em!#hrB'!!"#3YI#"6CA6rB#em)'p`CIpN,Aa +bBA4TrfJYI'pZ)'ErE#emB@PXCIp`,AaN,L!Jrh3GI!!9rf"J!!2U,A`J8h4brf! +YI'PZCb$rC#emBfpYF2pS,AaKFQPcrf`YI'pZ)'ErF#emB@PXCIpd,AaN,L!JrhJ +GI!!Crf"J!!1S,A`J8'9brf!YI'eTFh2rC#emD@pZ)2pS,AaNC@jTrf`YI'9N,L$ +rF"em!",rB'!!!hBYI#"*,drrB#em)'9bF[pN,A`!Eh)ZrfJGI!!+rf"J!!08,A` +J3Q&Nrf!YI#"QD@crC#emC5"ZGIpS,AaYBQ9brf`YI#iJ)#$rF"em!"$rB'!!!b) +YI#"1Eh6rB#em)'9ZErpN,AaeCfJJrfJYI'ePE@rrE#emFRNZ)2p`(A`!%[pJB!! +#m#em)%4PG[pJ,AaTBf8Jrf3YI'pb)(,rD#emCA0[GIpX,AabBf8Jrh!YI'*eFhR +rG#em,L!J)2pi(A`!'2pJB!!#VLem)%PZG[pJ,AaKE'PNrf3YI#"KFQIrD#emG@e +PE[pX,Aad,L!Jrh!GI!!4rf"J!!*m,A`J5@aXrf!YI'9RB@crC#em)(0PCIpS,Aa +V,L!Jrf`GI!!0rf"J!!*5,A`J6@&drf!YI'JJBA,rC#emCh9YCIpS,AaZG#"[rf` +YI(9d)'rrF#emCL"NErpd,AaYB@PZrhJYI#"[CL$rI#emCR9ZBrq!,AadD@pZri3 +YI#iJ)#$rL"em!#MrB'!!!I!YI#"0BA6rB#emD#"bCIpN,AacG@adrfJYI#"ZEh6 +rE#em)(*PF2p`,AabCA0Prh3YI'jdB@,rH#emE'8Z)2pm(A`!([pJB!!"TLem)%4 +TFrpJ,AaV)(*Prf3YI'&N)'ArD#emFR*[F[pXF#iY32p`(A`!%2pJB!!"GLem)%4 +TFrpJ,AaV)(Gbrf3YI'PdC5$rD#emCA*bErpX,Aab,L!Jrh!GI!!4rf"J!!&%,A` +J4QPXrf!YI'8JEQrrC#emG#"KFrpS,AacD@GZrf`YI'9N,L$rF"em!",rB'!!!4) +YI#"'D@crB#emC5"ZErpN,Aad)'p`rfJYI'9Z,L$rE"em!!lrB'!!!1JYI#"'D@c +rB#emC5"ZErpN,Aad)'p`rfJYI'9Z)'ErE#emEh)JDIp`,AaZF(9drh3YI#iJ)#$ +rH"em!"MrB'!!!+BYI#"'D@crB#emC5"ZErpN,Aad)'p`rfJYI'9Z)'ErE#emEh) +JErp`,AaeG("erh3YI(3Z)#$rH"em!"RrB'"N,A`J5@jfrf!YI'&XD@6rC#em)'j +eEIpS,AaPFQPMrf`YI#"QEh,rF#emE@&d,[pd(A`!&rpJB#`YI#"'D@crB#emC5" +ZErpN,Aad)'C[rfJYI(9ZC#lrE"em!!rrB'!%UIpJ"NKZrf#VrdjH6R@28f&QC84 +PBR9R8h4bD@jR!!"19J!!)Li!#%U"E!BJ!85!B!)J!5p!!!a1ALkI6R@+Aep59%a +"3P0IA`!!!%j@!!!["#m$*Li!%#J$jS4+Jfd+)#i!#1H)YS"Y"N)[!"aJ*L!Z!!K +6J*!!K#"Z!!`3-!J!5)"b"m+$G!(MDX4!5N*@`N3#(d)!(#BI+"p1AL"I6qm!$%l +3LPpI8d98AdP1Aem!!!"19J!!51FI-#CZ!!iNEJ!+2Li!#(J!'"Yk!"SD5NGQ$,K +&C`K#,`!ZB!!!k!a(!!&Q$VK&C`SII!!"!#jJ!!$8Z%9["$`&B!)m"$B'B!C5Le+ ++8d0+3fm'%"1`%QI`-!F-3!!&BJ!!R0"!-$X!"Nll!!)!$!!F!#J!3J"F!(C+3fB +!!)`II!!"!#jJ!!#'5N0RI"pm!!%!,Q"i5N0Q",K&E3T+3fGS%"1`%Q4L(h`!!3! +ZB&j+3fB%Z%9[#NT$Cdi3%l!5C%JII!!"!#jJ4%T$CJ5i4@i+5N0R0"!6X"*M,Kp +m!!%!,Q!U5N0Q",K&E!T+3fFD%"1`%Q-8(h`!!3!ZB"!r22rl6VN!!!5q9%p#,`! +Z60m-q%jH)&p2l`!+6Y#-Aep59%008&088PpI!!!!6PB!!%MR($Kf!%RZ!!K8M&L +-*'crr!aZ!!%!#'`%3K*JBRB!B&CBM#CXrr`J5e+)+!J`!e*!)%V3`#S)F!!3%p" +$$%!!rfmD,`3["6!m!2q3!%0)`#m!6VN!!!!D0M`!rf!J,`3["A!!%"-[!%kj!!! +!'R!!%"2@3&0Z!!K+EJ!)CU38JdcI($K1ANjeLPpI3dp13d&8Aem!!!"19J!!51F +I1#iZ!"!k,J!11#i!$#4Z!!JJ4hB!&K"R'NT%EaC+4@m5ZN0Z$VK$EJS`"G"%8d# +`3fm%3K*J1$!&8d!m!ja![%4X!MJ'&)3Q4pE&+%T5M$"%)!JL6#",FL#`J@8%SLj +J$NU!C`SL#4,B8i"QqL*"60mFq%jH)&p2l`!-6Y#)Aep$6e"CAem!N!i)3EL@RiY +!384C3%[e!!!DVJ!S!!8!!!!S!!!D6&P2@8mZZ!%`)&mJ#!5!!!!R%#k!,aFJAk! +Y@%p1GBT649498&08380,!!!!51F!1%r[rmJQI!!!!K3SI!!!!jK&l`!%3US!$%+ +U!")`%d4!08!!&L98!$"96dK[!!BJAh!"SQ!qJ$!I2S!rDJ!@!!)rE`!#!%K2l`! +i60mF!%jeN8G&9%098P*&6P4@8N9'6P90!!![!e92UC3`(cY!NIK96dkkriJ`(cY +!NIC#,C!!XPP25(K#f#!IS5)ZL#"I+dMiF&P2S@BZL#"I)QhiF#*4)dJ!"PP2S@B +ZL#"I)QhiF#*4)dJ!#RB"B#"C6k&Q,SJJAc*$)!P6J1@))QhiF#*43qN!)#1)#!" +53`a$!$a[fLBI6R@,8d9899"048e28PN!!#"[!!J`V`!')'m!#$&[!!3!!L"I8%p +1d)C6494%58d!!!")ja`J6qrrm$!Yq+U3!'hiTMp!!!)`,ILSN!"Yq+3qJ$p[!#J +!$Mp[!#S!$(BU-#m!!Pe!X'm!$Ph!4!!D!$!A"%!!'h)5dQm!$,*!AX&%!4J"4GG ++"@F85'm!"$mm!!-`+J!#9d!r!%kkrhC+"'F35'm!#$m$-"*A3$m!6VVrBM![!#` +-3!!*BJ!$H0"!-$X!"Nll!!)$E!!8!%J!ZJ$d!@!##J*m!VJ$-%S&CK4)E`!%2c` +!!h!$d'm!&$m!6VVr)%S%CJ!$2%K[!!Jr!c!$d'm!%Mm!6VVr#'!!!bC+"@B85'm +!"$mm!!0`!p"[!"3r!%kkrZa+"'B!!`K)E`!)-")%3!!EN!"[!"")`#)!i)RJLH# +*lSR5J1+"-%25L$m"-!0@3$)5NN#5E`!55-%J!H#)i)MJL1k)d)(LJ$)$dQm!%NM +"dS!r!8kkrTCJ!!+d5J9Q&%K[!!3r2!!$F!23E`!82`"1Z[jk5J4Q!!+@5'm!#$! +59d#3!'m!%$m!-"*A3$m!6VVqA'!!!RT+"@C-5'm!"$!U!!*G3*!!E`!55-!L!1# +*i)RJLHk*dS$LJ9D"2`%`+J!#A8#3!'m!&%M!)J$JLH#*i)RZLG+!iS&`!p"[!"4 +)`0#"2`"1Z[i)5J4Q!!)N5'm!#$m$-!23E`!52`"1Z[h`B!!#$NS&CNa)E`!%-#S +!!Pe!N!"[!"*)`#)!i)RJLH#*lSR5J1+"9S%r!6!U!!*G3*!!E`!85-!L!1#*i)R +JLHk*dS$LJA!$d'm!&%M!d)%r!%kkrCa+"'B!!EK)E`!)-")%3!!EN!"[!"")`#) +!i)RJLH#*lSR5J1+"-%25L$m"-!0@3$)5NN#5E`!55-%J!H#)i)MJL1k)d)(LJ$) +$dQm!%NM"dS!r!8kkr8CJ!!&N5J9Q6%K[!!3`+J!#A8#3!'m!%NM!)J$JLH#*i)R +ZLG+!iS&@J6m"-#S!!Pe!N!"[!"4)`#)!i)RJLH#*lSR5J1+"F!23E`!85-$3J6m +!6VVmmNS%CJ!"$NK[!!J`%PG!N!"[!"!r!$!59d!r!%kkr04J!!$b5J9Q(%K[!!3 +`+J!#9d#3!'m!%Mm!-#S!!PG!2`"1Z[b`5J4Q!!$-5'm!#$m$-!23E`!52`"1Z[b +BB!!!YNS&CKa)E`!%-#S!!PG!N!"[!")r!$!U!!*A3$m!6VVmG%S%CJ!!N!")E`! +)-")%3!!EN!"[!"")`#)!i)RJLH#*lSR5J1+"-%25L$m"-!0@3$)5NN#5E`!55-% +J!H#)i)MJL1k)d)(LJ$)$dQm!%NM"dS!r!8kkr"jJ2%S&CKa)E`!%-#S!!PG!N!" +[!")r!$!U!!*A3$m!6VVlr%S%CKK)E`!)-"*A3*!!E`!32`!`%PG!2`"1Z[[J,bm +!*$m[!!Jr,`!12bm!$Mm[!"5STdr[!""-h`3i)&p2l`!+6Y#,8d0"6%9A58j%6eF +!!&e298m[,`!-5'm!"L*I)"qKV5+)2S!`(fB)2fm!!J!%B!4#E`!%2fm!"!!1A%m +ZRdjeN!"(494(490838a88N9698a8!!!!51F3)%r[rr4C6bmYr4Sr2!2SU"mJAb4 +),`SJAk!T,e)!"&925'm!"Nkj!!!$b$!I0J"`2-($0J![#L"IS#S[#UQM5Lm!''F +Z98mr,C(i,bhp(Mmm!qK)EIdL3LG1Z3!!"!J3(fF32c`$k"mm!!&#*dkj!!!"H&9 +22bf4q#mYr53r2!2S5'hp+%)R6VN!!!3)%"pR6&P22c`$k%Ki!!")H2rrUA`JAbp +)!!K)E`!),c`!-J!%(c`!!8kj!!!$%#m[!!LSFbm[!!LTJ6"$,`K)E`!%)PmJAk! +l)S![,`!)UB02l`!-60m%##"I9%p1d)Y%6e4)49036%&65!!!98mJE`!'2UMq`$3 +AB#S`!P0!5-"6J1@))'m!"N(Srm3b3L)*8i(PL5*[!!C$kIr%)l!)!"J!8d)-3J! +#E0!JE`!')@m!#[r%9%mJAe"26Y#,B@4N6@9Z5A4PE6!!!%MR($"2lrbX@8mr2!! +%UENJAbY)q(`JEIKm,a#S86mYNILTQ$pm!!%#+Q!898mr22rr5'm!'+Pa%"m@!&* +[!LS-E`!$!LT[j%)YMDY96bmYr5T)E`!1)PmJ(k'Y)SJqJ$!IC`Jr2!!"UFLTp%* +[!LS`,`)UC`C63'F)B!a#,BfQB!BEI!!"MDC&lBfJ98m[,IdZ6VVpc$!I08!!#&9 +2,bhp-NkkrE``(dT!9X"%!"9!!!*96bmYr6C1Z[fQ-"p+3&E!4!!93!!"98m[,Id +k6VVpN!!`(dM!,d!!#&925'm!#NKi!"qSA4!I&)"96bmYr6j1Z[eZ-"p)`#p!!!K +96dK[!!T)H!!IU&d3(a9!!!0#,BfN5Lf0S'Fd98mr,C(i,bhp3Mmm!)&)EC!!XN) +R6VN!!!3)%"pR&PP22c`!JDSE)&mV52Kd'h`!!BfNB$*96cmYNIJ[,Ie'2c`!J8K +YN!#b3LG1Z3!!"!J3(fF8@8mr2!#"UENJAbY)q(JEI!!"MD496cmYNIJ[,Ie+3QG +)EIe1(c`!!8kj!!!%#"!I'J"+"@F'6VN!!!&)1fhpA*(d1fhpAT(b+ff-$[LN+ff +-%[LS3Qf4qP92,bhpB+J0-"ml3*13!!aY!!'6N!"X!URd@8m[,IeN2c`!J+JI)&m +N5#m+)&qJ+8IYMCK96bm53UHSA4!I&S"96bm55(J!!DKG%"mA3!!"98m[%NKi!!+ +SA4!I&d!!!P92,a*)H!!$U&d3(aG!!!096bm55(J!"+KG%"mA3!!%98m[%NKi!!@ +SA4!I&d!!"992,a*)H!!'U&d3(aG!!!C96bm55(J!"kKG%"mA3!!(,`SJAk!U,`U +TSdIYMCK+%fF!!4*C6bmYr@Jr2!#!U"mJAbp)!#3[,`!N)&qJ+8AYNj)JE`!N)&! +dN!!JE`!N)&!eD!!#!!)JE`!N)&!eD!!%!!3JE`!N)&!eD!!'!!BJE`!N)&!eD!! +)!!JJE`!N)&!eD!!+!!SJE`!N)&!9D!!-!!`JE`!N)&!9D!!1!!iJE`!N)&!9D!! +3!"!JE`!N)&!eD!!5!")JE`!N)&!eD!!8!"3`%Y"U!!,3DJ!%d'S!"Y"U!!M3DJ! ++5N"@`%3!&S![,`!N)&qJ+Lm[!#5TSdS6Cd*C6cmm!qLTZL"I*%JJ#QBN5'm"+#m +m!!`!J%kj!!!$U%([!5aB6d2YME)J2!!!!3#L,Q!1)&*$lBfb)$`!!!%!SLj(lBf +B5LX!!@GD@8mr2!ZhUESJAb4))&*$l`)X)$`!!!%!SLj96dK[!5T)E`)b6VN!!!- +!@%p)E`%U5'hpE$mm!!&1Z3!!!0J3(aG!!!&++`!"Ca![,Icm2c`!!8K[!M+T4kN +h1h`!!C11$'d!!C13!'mF@8mr2!!b5'hpGUNa)&mV52ci,bhmq$mmrrqT08K[!5J +[2!!3!)"1Z3!!!kK"l`%X@%p$l`)X)$`!!!%!SLii,C13!(B"B!!!MJa$!'4[!UR +d@8m`!`C!"p&63$m!UESJAb4))!TQ6$"$)!K6J1')3Hf8F0(!5&")E`%X2`01Z3! +!![KB6dK[!5a)EIek5'm#1%K[!$Jr2!!$6VN!!!$J3Hm!2Nr[!")LAb!m!!!"!+) +ZB"S`3b!)8i$KL%(YP($4`%23)&)J2!!!!3#L,Ja$IrpR#&*$YN4[!2p`5Lf0QQF +!!6KC6bmYrA`r2!#!U"mJAb4),`SJAk!T,e)!"&925'm!"Nkj!!!$b$!I1d$meP9 +25'm!"Nkj!!!$b$!I1d$mf&925'm!"Nkj!!!$b$!I1d$mfLm+)&qJ+Lm+UD0&lIL +m@8m[,If!2c`!J+JI)&mP5!!8,bS!&+Q5)'S!&#"309!!$&P22c`!!NKi!!")H2r +rUEdJAb9)!!K)DJ!),c`!!J!"3LG1Z3!!!a![+J!)U(-[+J!)5'm",#mm!"!!J8k +j!!!$U&K25'm",+ND*NT(k`3D98mr%cmV!!+T!K!ICJir2!!"U)Fr2!!*U)TJ$$m +U""USKcmU""bSLL9mrrrm'!3@@8mJDJ!)5'J!%#"U!!K)D!!3U$iJAb5)@8mr2!% +#,bS!#+Qq)&mP5!!%3LF[%UJ66VN!!!(J5'f1XNK[!Lj)E`!)UI9C6bmYrB3r2!# +!U"mJAbY)MC3JEBf8)&"++!!*Ca3JEBf8)&"++!!)C`JrI!!)!LTJ"%*[!LT)E`! +-,c`!-J!b,c`")J(JU+G+,BfJCcjC6dKi!!")E`!85'hpL%)R2bm#2%KirrmI2!! +"3UHU45"I+dMmiMmYNij1Z3!!!X![,IcLU(0)EIcFUK9J*PP25(J!!%K[!"4)EIf ++3LFr,`)m5(Mrramm!!&#TkN6)&mV52cL6VN!!!+i,bhmiUKc4HhiT#mYMC3JAk! +T)'f0P#"3-""63'F+8d"R!!#FB!!!kL"YMC3J8$!S!!*R#P0!CaC63'G%B&!`+J! +'N!"U!!*G3$p!!LTJ3$!U!!D3!'S!!Ja!!J"[&$!U!!D3!'S!!Pe!"%!!8$p!!LT +J(M!U!!D3!'S!!Pe!2d!#+Q!1-$`#!0"U!!*G3$p!!LS[,IcL,c`!+J!$3LHT'bm +Yr1)r,`)Z-#S!"*!!8J4!!"3%3!!2Ad"A3$m!3LHT(@"5)'f0P#"32bJ!!L"YMC3 +J8$mS!!3JEBf8)&!r+!!'5'm!%NkkmQC&l`!-,bhmiMmU!!)r%N)RU4X[,IcL-#S +!"T!!DJ!#2`!`+J!%N!"52`"#*kNG,bf0P#"IS#S[,IcLU(0C6b"Yr1*)D!!3)'h +miNKS!"#S2L"I+dMiQ%SYMD0R#PP2U0JJAbY)q*4#*bmYq*LS%dKj!!!#S#mYq*K +1Z3!!!,![,ILB)&qJ+5"Yr1)LEILB)P%LU!!3)fJ!&!!%,bhiQ#"IS#T1Z3!!!RK +C6cmm!3![,IcLUEiJAbY)q)41Z3!!!QJ[,IL%2c`!rkPG3LhmjPP25(J!H#!IS5) +ZL#"I+dL0VN)Yr1G"lIf-3qf4dR!()YK4b2rm3HhpV%2YNE*`"b,B8FMrr"Ym!!' +0V%AYq+4)EILXF!63DJ!#2`"`'0"52`!`+J!'@8!r!$!U!!4C3$m!U+G)EILd2bS +!!R!Bd&)r!$mU!!Br+J!%U+G#E`)U-#m#+QF'8d"R#'!-3Lf0V@!''h`!!BfY5Lf +0QQB+$'d!!C13!'m!!+`lI!!$r1KC6cmm!!5T[b"I+dMp##mYr3K#CkNe5'm"+#m +m!"!!J8kj!!!$U%([!5aB6d2[!L`J2!!!!3#L,LmYr3K#CdK[!M+T4`aY!!'6N!" +["Nkj!!!"N!"+,BfDCK`[,Id)2c`!!DP5,bhp#$mm!!'T8MYm!!(mk'!`5'm"+#m +m!"%!J8kj!!!$U%([!5aB6d2[!L`J2!!!!3#L,LmYr3Jr2!!"5'm#-UP(3Qm#+%K +[!5J[2!!*!)&1Z3!!!kK"l`%X@%p$l`)X)$`!!!%!SLi[,Id!5'm#-%*RU#C`!G" +[!LJr3!)S,bhpc%K[!fa1Z[9f4Hf0Q%SU!!CR4%K[!5J[2!!)!)&1Z3!!!kK"l`% +X@%p$l`)X)$`!!!%!SLi[,Id!5'm#-%*RU#C`!G"[!LJr3!)S,bhpd%K[!fa1Z[8 +S4Hf0Q%SU!!0Q$%SU!!4Q"NSU!!9R,Kpm!#d#,Mpm!LJ#,#mYr3")E`)`3QHS*R! +"d'm#+$p!!LJ[,Ih85'm$E%kkp14(lBfB4Hf-M%SV!!0R!!$F5'm"+#mm!!F!J8k +j!!!$U%([!5aB6d2[!L`J2!!!!3#L,LmYr3")E`)`3QHS*R!"d'm#+$p!!LJ[,Ih +B5'm$E%kkp*!!5'm!+#mm!!B!J8kj!!!$U%([!#aB6d2[!L`J2!!!!3#L,LmYr3" +)E`)`3QHS*R!"d'm#+$p!!LJ[,IhF5'm$E%kkp%a++`!%CJC++`!&CbiII!!Y!Li +rI!)S!L`[,Id!5'm#-%*RU#C`!G"[!LJr3!)S,bhpi%K[!fa1Z[353Hf3!,)L5L! +m!!!"!+)Z3LS"!"9m!!%"!8AYMCK++J!&Cd4)E`%S,c`!"3#"6VN!!!1S3Hm",&K +23qm#,#!m!!!"!+)Z,bhp!%K[!M"#CkJQF!(3E`)S2d!#+#mYrH4)E`0X6VVcV%A +YMCK++J!%C`!!LNK[!5J[2!!%!)&1Z3!!!kK"l`%X@%p$l`)X)$`!!!%!SLi[,Id +!5'm#-%*RU#C`!G"[!LJr3!)S,bhpk%K[!fa1Z[0F5'm!+#mm!!-!J8kj!!!$U%( +[!#aB6d2[!L`J2!!!!3#L,LmYr3")E`)`3QHS*R!"d'm#+$p!!LJ[,IhX5'm$E%k +kmaLT0dAYr1T#8N*U!!*#DJ!%3QS!"N*U!!K#DJ!+3QS!$%AYr1Si,`)SGJ&J!!$ +1-%-J#&1!jBK"l`-X$,"338G&#!"Q"M5$B!!!UM"$)!K6J1@)3Hm$,!b`8&*19!J +!CJJe3`!#B!!!M$"$)!K6J1@)3Hm$,!b`6e988!J!CJBe3`!%B'i`3b!)8i$PL%( +[!b`-X%C14%F)!'B'08-!#'"5-%-J#&1!jBK"l`-X$,"'58j%#!"Q"M9$!!CJ0M" +$)!K6J1@)3Hm$,!b`9&*"6JJ!CJBe3`!+B"S`3b!)8i$PL%([!b`-X&&9593)!'B +%08-!$!a$IrpR#&*$YN4[!2m`6VN!!!,398mr,C(i,bhpm%*R5'hpp"mm!!&1Z3! +!"!J3(aY!MD9+,BfPC`!!M!aY!!'6N!"[!!##@8mr2!2S,bhmiUQq)&mV52L!)'h +iJ#"3)'J!(#"3%@f0S!"&)'hiJ#"3)'J!(#"3%@f0QJ"%)'hiJ#"3)'J!(#"3)@h +mq!!m3Hf8F#*Yq)!L85*T!"`L850)!%![,IL!2c`!!DPN,bhiJ$mYNj!!U@8[,IL +!2bf6MUPM6VN!!!*`98mr,C(i,bhpqMmm!qK)EIhq3LG1Z3!!"!J3(fF'(`91Z[" +!,bhmiUN9,bhmiUKc,bhmiUNI)'hmiNKS!"#SSbmYq)5TE6mYNij#*dkj!!!#i#" +Yr1*)D!!3U5T+,BfPC`i-E3!"Nj!!E`B[,IL!U@fS8%r[!e4-h``i6R@+8d9899" +69&9'4J!!!%MR(c"2lr[L@8m[,Ii!2c`!J+JI)&mQ5#!,C`!#@#m,UC)[#b"IS#P +C6d+R)"qK)Lk))&mN5(i!,e-!'#"[!"Jf%%K[!"K)H!!#6VN!!!1`2d-!&$pm!!% +!&Q!!!A!JE`!B'"")K(B"eN4)`bm[!"K)E`-L,`-J(b*I)&qJ,NK[!"J[!dkj!!! +$X%K[!"K)H!!"6VN!!!1`)'m!'"J35)4f!GC%5--[,`!B5'm!)#m$)"mLAb"IS#j +)E`!B,`01Z3!!!l")E`-H5'm")+N!HJ"+E`%FCLj96dK[!5")E`-N6VN!!!-!@%p +)E`%J5'hq"$mm!!&1Z3!!!0J3(fF'2hcrr`%FI!!F,`!FGJ&JB%([!"ai!"J`-!" +96cm[!4ir"+N#%"pQ3(i"HJ&)E`%H2`41Z3!!![KB6dK[!4j)EIi-5'm$*NK[!LS +r2!!$6VN!!!$J3Hm#-%r[!"*$l`-H)$`!!!%!SLi-3hrrC`C53lC'Eja+"@G+5'h +q$NK[!b*)E`%Q2c`!!Nkj!!!!i%([!5a2l`!13qm$(L!m!!!"!+)ZGJ!@,`-H5-0 +96dK[!b%[#Lm$)"mLAb"IUHmqJ$!I1!!-Ehrr!"CR%&*[!"B`,`!@X'm!&'m!rSJ +[#b"IS#S[#b"IS#0+"fF!!)DS8&P22c`!JNKi!!")H2rrUA`JAbp)!"")9bm[!"3 +r2!!#6VN!!!-S,fm!"!!-,fm!#!!35'm!&#mm!$`!""mm!!&1Z3!!!a![,`!8U(- +[,`!8UB%[#Nkj!!!!8#!I*J!r2!!"U)Fr2!!*U)S[%Lm$5'm!%%*RUFj1Z3!!!aJ +[,`!3UB-[#L"IS#02l`3H60m-q%jeMd4*8e"-39P'6dj86Np843!!,`02lri!GJ& +J,PP22`1T[b"I-N-J#91!jBK$lIcm)iJ)!$"$)!K6J1@)3Hhmr#m`#!"#CkNe8N- +-3`!$Em`[,Icm,bhq%+P05&F[2!!"!)&1Z3!!!kK"l`!%@%p$l`%!)$`!!!%!SLi +[,Icm2c`!!8K[!3DT4dKA,c`!!J#"6VN!!!1S3Hm!"&K23qm"!#!m!!!"!+)Z,bh +p!%*R5'm""UP(5&F[2!!+!)&1Z3!!!kK"l`!%@%p$l`%!)$`!!!%!SLi[,Id%3QG +)E`%'U8G)9bmm!!X!J8kj!!!$U%([!!4B6d2[!3!J2!!!!3#L,LmYr33r2!!"5'm +""UP(5&F[2!!-!)&1Z3!!!kK"l`!%@%p$l`%!)$`!!!%!SLi[,Id%2c`!!dK[!3D +T4dKA,c`!$3#"6VN!!!1S3Hm!"&K23qm"!#!m!!!"!+)Z,bhp"$mm!!4)E`%'U8G +)9bmm!!i!J8kj!!!$U%([!!4B6d2[!3!J2!!!!3#L,LmYr33r2!!&5'm""UP(5&F +[2!!2!)&1Z3!!!kK"l`!%@%p$l`%!)$`!!!%!SLi[,Id%2c`!"NK[!3DT4kNh6qm +#!#BI6R@*68&,48e&6P96!*!&2d,kXHQ+T%GpIkGjpZIQZN9ChYKrX0jrY0RQdAi +KId4rS+Z+3&D13%Ihpd""3%G!4Te!Ui@9M%#(3Ip!@DP!IZVjid",LTkVid"JN!# ++N8$HkC!%kZVT!*!,'!!!"6!!!(4`!!!!#!!!!#!!!$mm!!'Tm!!!!!TB`!!3!!! +!$8J!N!3"Q3!!!"B!!`!%!!8!"3!(!!J!!!%!!!!(e`!*!!!!$`j'EfpdCA)J5@j +QEbiZ,J!!!!S!!J!#%iJ#!!%"!!!!'!#3"`)!!2q3"J!"rj!'!!!!*J!$"d0[GA* +TCA)!!3`'4f9ZCACK!!%-#8KPE(CPG'PMB3!$$!iB!!!!DP9Z)("PG'Pd)(4PFh3 +0BQpXC'PdB@aTBh9ZC'9bE'PZC@peG'aTEQ9cD'&NEhF0BQaeC5"RFQ9PEL"hD'P +dC5!0-6)J-63J-M30D'9XGQ9dD@0K)#KNC@BT)'0[GA*TCA)JCf9ZCACK$3d!!!& +#!"!!N!81!!S!&3!!!!`!N!N1!!i!#J!9!3!!$!#3#4)!$J!+!"8#!!!-!*!*'!! +1!!S!&33!!!`!N!NK!"!!#`!9#!!!$!#3#5J!%3!,!"83!!!-!*!*,J!1!!S!&3! +!!!`!N!N[!!i!#J!9!!!!$!!!!!6rrJ!!!$3!$J!+!"8!!!!-!!$-c#,4!!!!1J! +1!!S!&3!!!!crN!B!!!"!!!i!#J!9!!!!$!#3#83!$`!,!"8!!!!1!*!*4`!C!"3 +!&3!!!"J!N!P*!!i!#J!9!!!!$!#3#9S!$!!+!"B!!!!-!*!*BJ!3!!`!!`!!!!` +!N!N+#80SBA"dCA)J-3!!!"3!!!!N!!3!*!!f!$B!"!!f!+J!N!8CB5"ZCAFJBfK +KF(4PFL!SBfKKF(4PFL!b+3!!!"B!!3#3"3i!#J!9!!!!$!#3#3S*3fKKF(4PFL! +b!!!!&!!!!#3!"!!N!$B!0J!%!$B!U!#3"!%!!!%E9J!"'PB!!!C[!%-La"H#!!! +!(!9b!#4$4%9'!!!"+RCPFR-!!3%f8e45)`!"!8j35808!!!"CQecG()!!3&b689 +193!$!BTTBh-i!!!"ZQPMFc3!!!('D@0c)`!!!G**3dp1!!3"hNP$6L-!!!)DD@0 +X1!!!!LCTBf`d!!!#-NC548B!!!)q4%a24`!%!NT%594-!!8#KN019%`!!3,13Nj +%6!!!!ZC"6&*8!!!#mQ0[ER!!%3,qB@9dC3!!!pCNBh4L!!!$iQPMG')!!!2Z4'Y +!8!!!!rT%6%GB!!!%"N024%8!#J354%&833!!"*C659T&!!!%SRKdFM)!!!5ZCQp +[G!!!",T69&)J!!)%aR08Gd3!!!6UBfaeG!!!"2Cb884'!!!&!P4&@&3!!381Fh4 +jE!!""5CAEQ4[!!%&2J!H!*!,!Irr)!!@p`#3"3,rr`!!&c!!N!@"!!8!!"GH!*! +&J!!5!!!B!*!'J2rr!!!C[`#3"@3!(`!!'qd!N!9P!#N!!"[f!*!&!3!c"!!Er`# +3"3-!0`3!(#i!N!8#!$`%!"ak!*!&"!"""!!FNJ#3"B$rr`!!(-N!N!@!rrm!!"h +0!*!&J2rr!!!H83#3"!Zjrrm!!"k9!*!'rrmJ!"mC!*!&![rr)!!IR3#3"3(rrb! +!)#%!N!@!rrm!!##P!*!&J2rr!!!K+3#3"B$rr`!!)Ld!N!@!rrm!!#Ba!*!&J2r +r!!!S03#3"FJ!4L!!+%!!N!@%!%XJ!#KD!*!&JJ"3)!!SG!#3"!%b!&8J!#L1!*! +%#lJ!@L!!++X!N!A)!'!J!#X2!*!&K!"P)!!VA`#3"B)!DL!!,"8!N!3"-J"[)!! +Xe`#3"B%!G#!!,9d!N!3,Z!"j)!!YL3#3"!%!!(m%!#rT!*!%!qJ!K!3!-!8!N!@ +!rrm!!$!K!*!&J3#*)!!`33#3""1*rrm!!$"4!*!%%iVrr`!!-EN!N!36Lrrr!!! +c0`#3""1-rrm!!$5K!*!%%ihrr`!!0J-!N!36M[rr!!!hK3#3""12rrm!!$M[!*! +%%j!!rrm!!$R(!*!%%j(rr`!!1Td!N!36N[rr!!!lN`#3""1lrrm!!$b*!*!%%lc +rr`!!2Hm!N!36[Irr!!!rD3#3""1qrrm!!%$*!*!%%lrrr`!!3LN!N!36L2rr!!" +$U3#3""16rrm!!&,p!*!%%m$rr`!!9)d!N!Err`!!9Kd!N!3,Z2rr!!"DV`#3"!Z +irrm!!&VM!*!(MJ!!@[X!N!3,Z2rr!!"E)J#3"3%!R4`!@l3!N!8#!+)X!(HD!*! +&!`#X,!#-`!#3"33!Z#!!X!3!N!8(!--X!-Id!*!&#!$0)!$*D!#3"3`!dL!!dIB +!N!80!0FX!03-!*!&$`$H+!$Z+`#3"4!!l#J!r,d!N!ErrbJ"&fm!N!ErrbJ!FQ` +!N!6rN!3!!4H,!*!&J2rr!!%AQ3#3"B$rr`!"&ji!N!3$k!$c!!%AZ!#3"!I4rrm +!!4R6!*!%"p,rr`!"'M!!N!@!rrm!!4I,!*!&J2rr!!%Af3#3"B!!q!!"&r8!N!@ +!rrm!!4JI!*!&JIrr!!%Cq3#3"B$rr`!"')d!N!@"rrm!!4S@!*!&J2rr!!%Ci3# +3"B(rr`!"'Mi!N!3%BfKKF!a0C@je)&0dFQPZCh--6@PcBb"6G(*TEQGc#9&eDA3 +J6@9ZG3P4G@Pd)%PdC@d$BA"X"%9NDA3%4QPXC34MER4X"("bG$%%F(*d-J4QEfj +d"'CTEQ3&B@*%E'F%F(*d-34`FR3b"'C[ER3%CQPZC!4KE(*d"@&L4'aR"(0dC(B +%BfKKF!4KE(*d$NphEQ9b)(*PFfpeFQ0P"%eKD@i*9@jTGP"bEf0c#eGTEQ4[Ge0 +dG@CQ#P"bD@jd8h4eCQB*4QPXC90dG@CQ"%CTEQ3%4(*KC`C&GQ9ZG(-06@&M)%a +TBR*KFQPPF`C9EQa[B@3%CR4iG!4'6dj8K3S!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_1.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_1.0 new file mode 100644 index 000000000..841bf98b4 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_1.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_2.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_2.0 new file mode 100644 index 000000000..456b55d6a Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/FullWrite_2.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.4J.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.4J.hqx new file mode 100644 index 000000000..f86c2ef7e --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.4J.hqx @@ -0,0 +1,178 @@ +(This file must be converted with BinHex 4.0) +:"R4PFh4SDJ"*9d4$5%eTG`%!!!"63J#3"&kS@8aC8`%!N!X&G'PdE'8!G!B3!*! +,6LKF!!!HU!+ZEh-J)!!!!!,LB!#3"34Kk!!!6Z3!!%lFhHiJ!*!%4,[X!!$rr`% +!!(30[!!!r`#3"!%!!2rr!(dJ%J"e8p*Ia!"D!(96dJ#3"dJ!!!")!*!&!3!"!!J +N5KKcG@*UC@0d$3eXD@GZC5!b$A0eBQTPBh4QJ"9l8J"d!bi!!!QBr`#3"Iq3"!" +1*j)!#J#3"8iT&!#3"XeH&l8!!!$lrrmJ%J"d$E`!!2m!!(3$5!!3q*`!!!!"!!$ +rr`"p)")!G925!!$rr`"p)")!G925!(3$fJCKGA4SEh)H!!)N$3#!!!"!J1D53)$ +JaJ"d$E`!!2rr#$%Z-#KbCABTI5!5!!-4[J"eCF`!G!3X!(dJ%J"d""S3FQ9YBA* +V$3eXD@GZC5!b$ImJ!!!m[6JJ"!!$!!-4[J!!#+!!!)!fAm3!@J"e8p)!#8m)!*! +&I+c-!%iR9!"d"!!!$4aZ!%iR9!!!!!%!!2rr!*!*G925!!F!G925!(3!G!#3"9" +"2!"d""`!#b3Q!!XN*J'qRE`!G!"d"$!!#b4@!!XN9J"1*e5G[!"d!(3%3!!,4Pi +!#dCH!%iR9!#3"8pBTJ"1*e4Ia!"D!'XR5J!)5,i!!&r%!&S!G3#3"9""2!"d"(S +!#b3Q!!XN*J&3RE`!G!"d")i!#b4@!!XN9J"1*e5G[!"d!(3%RJ!,4Pi!#`#3*3) +!N!B$'!*N!%EGZ`"'hEX!4Yfl!&8+&!"'hEX!4Yfl!KdL43,#pH`!!`!!!%J!5!# +3"!-B!Q3!N!3$'!*ND`!&+!2m!!)!!!")!%J!N!3$'!*N!!%!!!"N!!!!!3!"!3% +!!J!"*`m!!3!"!*!14P3!!!(M!aJ!!!!N!!%!N"V0KDLb!*!-c9iAf3!#b&!!N#! +(E@&TE#"dE`#31!KYB@PXCQpbE3#30`aYB@PX)(0eBQTPBh3!N)!F@,%!"`!(!*! +&!Y@V!!!!"!#3"!%"!3!!"J#3"+!!N!m%i!!!**3!!#JJ!!!jI!!!2iJ!!%Vk!*! +'6PB!!%mb!!"2iJ!!8R)!!%q#!*!H8d)!!J#3""qd!!!!F!!5!!B!"!!!!!J!!3# +3"8iQ6!"1*P!!6LCJ!%iQ4!"1+%J!6LK%!%iS2!"1+%!!6LC)!%iS0!"1+$!!6LJ +X!%iS*!"1+#J!6LJi!%iQE!"1*QJ!6LJ8B'C+,`"5CJJ-E`!$!2aQ+%S[!&0R)NS +[!!!"Z!$)!!!!!`!!!!`!N!F"!*!@)!#3&!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m +!N"Arr`#3#JG%C@CKG@ad!*!D!EJ"b!!!!!-!!!!-!*!(!3#3&L!!N"3"!*!+#`X +,!*!N!3!"!!%!!3!"!*$r!*!9rrm!!3#3#!C)C@&NCA)!N"X"Z!,)!!!!!`!!!!` +!N!F"!*!@)!#3&!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!#!*!)"NC[Eh4 +PFJ#3'`'i!mS!!!!$!!!!$!#3"`%!N"BJ!*!8!3#3#JX,#`#3*!%!!3!"!!%!!3# +3r`#3&Irr!!-!N!J&5@jNCAJ!N"`"Z!6)!!!!!`!!!!`!N!F"!*!@)!#3&!%!N!S +,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!%!*!)!e423`#3(J'i"FJ!!!!$!!!!#3# +3"`%!N"BJ!*!8!3#3#JX,#`#3*!%!!3!"!!%!!3#3r`#3&Irr!!8!N!J)4Qp[G'j +[G'8!N"N"Z!E*!!!!!`!!!"J!N!F"!*!&!3#3%#!!N"3"!*!(!3!!#`X,!*!N!3! +"!!%!!3!"!*$r!*!9rrm!"J#3#!K)C@&ND@jR-3#3'3'i"mN!!!!$!!!!%J#3"`% +!N!8"!*!3)!#3&!%!N!F"!!!,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!(!*!)#%K +PB@4TEQFb!*!C!EJ)b3!!!!-!!!!1!*!(!3#3"3%!N"!J!*!8!3#3"`%!!!X,#`# +3*!%!!3!"!!%!!3#3r`#3&Irr!!J!N!J)5'9KC'PZCc-!N"N"Z!R*!!!!!`!!!!` +!N!F"!*!&!3#3%#!!N"3"!*!(!3!!#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!#3# +3#!K)C@&ND@jR0!#3'3'i#XN!!!!$!!!!#J#3"`%!N!8"!*!3)!#3&!%!N!F"!!! +,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!+!*!)#%KPB@4TEQFe!*!C!EJ,b3!!!!- +!!!!*!*!(!3#3"3%!N"!J!*!8!3#3"`%!!!X,#`#3*!%!!3!"!!%!!3#3r`#3&Ir +r!!X!N!J)5'9KC'PZCcB!N"N"Z!c*!!!!!`!!!!`!N!F"!*!@)!#3#"J!N!X"!*! ++#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!$!#3#!C96'PcG$%!N"X"Z!h*!!!!!`! +!!!`!N!F"!*!@)!#3#$!!N!X"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!$3# +3#!C96'PcG$)!N"X"Z!l*!!!!!`!!!!`!N!F"!*!@)!#3#%J!N!X"!*!+#`X,!*! +N!3!"!!%!!3!"!*$r!*!9rrm!$J#3#!C96'PcG$-!N"X"Z!r*!!!!!`!!!!`!N!F +"!*!@)!#3#"J!N!X"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!$`#3#!C26'P +cG$%!N"X"Z"$*!!!!!`!!!!`!N!F"!*!@)!#3#$!!N!X"!*!+#`X,!*!N!3!"!!% +!!3!"!*$r!*!9rrm!%!#3#!C26'PcG$)!N"X"Z"(*!!!!!`!!!!`!N!F"!*!@)!# +3#%J!N!X"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!%3#3#!C26'PcG$-!N"m +$M!!!!,!!%J!#!!J!!!!%!!)!N!6rrJ!!!%iS(2rq8#!!6LJ3rrj3)!"1*S6rrP! +J!%iS#2rq8#!!6L6Frrj3)!"1*T!!rrj3)!"1*4MrrP!J!%iNd2rq8#!!6L8Xrrj +3)!"1*6$rrP!J!%iNp2rq8#!!6L6Nrrj3)!"1*1$rrP!J!%iNk2rq8#!!6L6Xrrj +3)!"1*2$rrP!J!%iP$2rq*q`!6LHd!*!&!3#3"!3!N!JN!!-!!!!-!*!(!3#3'53 +!!`!!!!`!N!F"!*!&!3#3%b3!!`!!!!`!N!F"!*!&!J#3%b3!!`!!!!`!N!F"!*! +%#!#3!!`!!!!`!N!F"!*!&"!#3%b3!!`!!!!`!N!F"!*!&#!#3%b3!!`!!!!` +!N!F"!*!&%!#3%b3!!`!!!!`!N!F"!*!&)!#3%b3!!`!!!!`!N!F"!*!&3!#3%b3 +!!`!!!!`!N!F"!*!&`!#3%b3!!`!!!!`!N!F"!*!%!3#3!!`!!!!`!N!F"!*! +%!J#3!!`!!!!`!N!F"!*!%"!#3!!`!!!!i!N!F"!*!C*!!$!!!!%!#3"`% +!N"NN!!-!!!!5!*!(!3#3'53!!`!!!"J!N!F"!*!C*!!$!!!!#3#3"`%!N"F"!*! +%%9`!!!#J!!`!!!!-!!!!!J!#!*!%rri!!!"1*2J!N!6rrJ!!!%iP!*!&rri!!!" +1*33!N!6rrJ!!!%iP#!#3"2rq!!!!6L8N!*!%rri!!!"1*43!N!6rrJ!!!%iP%0@ +V!!$rrJ!!!%iL+!#3"2rq!!!!6L)B!*!%rri!!!"1)N$d5!!!rri!"3"1*U3!!!! +$rri!!J"1+13!N!B"B#!!N"3"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!6!@!J!!! +!!J#3%!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m!N"-"B#!!!!!"!*!3!3#3#JX,#`# +3*!%!!3!"!!%!!3#3r`#3%`&J)!!!!!-!N"!"!*!+#`X,!*!N!3!"!!%!!3!"!*$ +r!*!6!@!J!*!8!B!!N!N,#`X!N#3"!!%!!3!"!!%!N2m!N"-"B#!!N"3#!*!+#`X +,!*!N!3!"!!%!!3!"!*$r!*!6!@!J!*!8)Y@V!*!)!3X,!*!N!3!"!!%!!3!"!*$ +r!*!6!@!J!*!8!3#3#JX,#`#3*!%!!3!"!!%!!3#3&38!N!Xp)N8"!*!)A5*&!`! +!,J#3"CmL43#3#G-L43#3#!%-)N8!N,i"B#!!N"3"!*!+#`X,!*!N!3!"!!%!!3! +"!*!9"!#3#cdL43%!N!KG)N8#!*!)HL*&!`!!,J#3"CmL43#3bJ&J)!#3&!%!N!S +,#`X!N#3"!!%!!3!"!!%!(&La!*!*1,&M!*!&"3#3#cdL43%!N!KG)N8$!!!Z!*! +&Rb*&!*!*db*&!*!)!3`L43#3[J&J)!#3&!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m +!N"-"B#!!N"3"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!5!`#3"!B-!!!!E!!0!!F +!"!!-!!S!!3#3"8iL-!"1)L`!%!!!!%iNc!"1*0J!6L(3!%iN0!"1)M3!6L)m!%i +KZ!"1*[3!6LId!%iQ[!"1+5J!6LM-!%iS"!!)!!!!"!!"!*!(%!!!!%J!!!")!*! +(0!B!$!#3"NEGZ`"'hEX#(5*&!X,el!#3"!*m'$%"eN5+!!m!N!G1+!!!6L4X!!! +!4))!N!B(!(i!!!%L!!!!p!!!!BS!!!!,!*!1!BS!!!"q!!!")J!!!23!N!G1++! +!!3#3"85#!*!'#!#D!!!"I`!!!6!!!!)$!!!!$!#3"K!!N"a1+,`!!3#3"85#!*! +'!`()!!!"@!!!!I-!!!'-!!!!$3#3"L!!N"a1*p!!!3#3"85#!*!'!`&$!!!"I`! +!!B%!!!'F!!!!$J#3"P'!!*!E6LC`!!%!N!9%JJ#3"J-"BJ!!!8S!!!),!!!"I3! +!!!m!N!C4J!#3'diP(!!"!*!&2*)!N!B%!4m!!!%L!!!"a2mb!D2r-J!3!!!!2Aq +C!%prQ3!"!*!&!J"1,3!!6LB3!*!&6LB8!!!!0!)!#!!!!3!!!%EGZ`"'hEX",!! +!!V$el!#3"!*U'$%!j5*&!!)!N!AC!%iSP!"1*'`!!!!d!J!%%!!"!!!"1!!!!%E +GZ`)G)N8#N[AX!*!%!N`B-3$P)N8!!3#3"I8!6LLF!%iNE!!!!$3b!3!!!!%!"3% +i!!!#S2AX!KdL43+`pH`!#J!!!!`!!!$P)N8!!3#3"diQI!"1*q`!!!!d)J%!`2r +r!!B!4Yfl!V$el!)G)N8#`[AX!!-!!!!3!!!"eN5+!!%!N!G1+*J!6LMd!!!!0#) +"!)!!!3!'!%EGZ`+`pH`#(5*&!X,el!!$!!!!%!!!!GC%LJ!"!*!(6LLB!%iSp!! +!!$6#!*!%!3!!!6J!!!+5pH`#(5*&!U$el!!+!!!!!3!!!3#3"!J!!!!#!!!!NJ! +!!%iRp!!!!F!!#3!!!$!!!!!"!!)!N!6rrJ#3+!%"!3!!!2rq!!!!!3!!!!%!!!! +"!!!!!3!!!!%!!!!"!!!!!3!!!!%!!!!"!*!%!3%"!!!!rri!!!!"!!!!!3!!!!% +!!!!"!!!!!3!!!!%!!!!"!!!!!3!!!!%!N!3"!3%!!!$rrJ!!!!%!!!!"!!!!!3! +!!!%!!!!"!!!!!3!!!!%!!!!"!*!%3!!!!!%"!3!!!2rq!!!!!J!!!%*rQ3"8IjN +!!J!!!!%!!!!"!!!!!3!!!!%!N!4!!!!!!3%"!!!"rri!!3#3"3)!N!F#!*!B!3% +"!!!!rri!$!#3"3)!N#!"!3%!!!$rrLaB!!%!!!!"!!!!!3!!!!%!!!!"!!!!!3! +!!!%!!!!"!*!%3!!!&!%"!3!!!2rq+SJ!!3!!!!%!!!!"!!!!!3!!!!%!!!!"!!! +!!3!!!!%!N!4!!!!!!83"!*!'0!!#!!)!#!!%!!3!!3#3"3)!N!G1*J`!N!91*-! +4(!!!"9C8-6!`)"`!!!#%!!!!-!!(!!%!"!!!!!J!!3#3"8iKZ!"1)M`!6L)d!%i +N0!"1)G!!6L6B!%iNc!#3"c!!"3!$!!3!!!!)!!%!N!91+!3!6LDm!%iSc!"1*r3 +!6LEd!!!5,!!+!*!%!H!!"!#3"!'d!!!!-!!%!!3!"!!!!!J!!3#3"8iNE!"1*K! +!6LIX!%iSp!#3#a4P)(4[!!!!*J!!!33!!!$B!!!!f!"1*h3!6LDJ!%iN9!"1*h` +!6L4N!%iQ-!!$!!!!-!!$!!8!"!!!!!J!!3#3"8iNc!"1*[3!6LIdFJc$`b"5)B! +B%$!$8N!J8V"36qm!!!!Q!!!!"!!!!!)!!!!#!%iRH!"1*V3!6L4J!%iQX!"1*&` +!N!8"!!!!-!!"!!F!"!!!!!J!!3#3"8iKZ!!)!*!*5!!!!%J!N!8"!!%!!3#3"5B +!!!!0!!!!$!!!!!`!6LJ-!%iT1!"1*qJ!6LIi!%iQP!#3"3%!!!!`!!%!"`!%!!! +!#!!"!*!&6LDm!qX!"!2X!!8$l3!'!qi!"`2[!!J$m!!*!r%!#J!!!#B!!!!+!!! +!#J!!!!S!6LM8!%iT!!"1*VJ!6LNN!%iRr!#3"3%!!!!`!!%!"`!%!!!!#!!"!*! +&6LNS!*!%#J!!8h4TBfYTCA-!N!30!!#P)&0SGA3!"3#3"!D9!!!#%!!6!#d!#!! +!!%!!!3#3$3-!!!!"!!!!!`!%!!)!!!!$!!S!!`!!!!-!%`!%!!!!!`!D!!8!!!! +$!#!!"J!!!!-!+J!(!!!!!`![!!J!!!!$!$-!#3!!!!-!3!!+!!!!"!!!!!X!!!! +%!!3!$!!!!!3!$`#3"38!!!!0!!!!"3!%!!i!!!!&!!J!$`!!!!8!$!!3!!!!"J# +3%8J!6KA%!3!#J!4'##d3%b!L3%5!UN#4)1)@"!N)#4!')!&!!)!"!!1!"mB2lar +r2rjrr2rqIrmrrKrm$rJ2m!IJ!F!!J!!!!%`!6KA%!3!#J!4'##d3%b!L3%5!UN# +4)1)@"!N)#4!')!&!!)!"!!1!"mB2larr2rjrr2rqIrmrrKrm$rJ2m!IJ!F!!J%G +S!*!%!3`!6KA%!),rN!3!8%M8rrfpq34&C'Pd"99ZC'mJ!&S!!!%Y!*!%!d0eG!" +B!!!+3fp`H5"3E'&TEJ"$!!!,8'&cG'8J8'aKD@i!9J!!"80XC@&b!*!%#P0PE'9 +MG#""E'`!33!!#84eF'aTBf&dC3"%!!!",3#3"!4'D@jN!"X-!!p*ER0PFR3J9Q& +bD@&LE'8!'`)!$%PZFf9bG#"#FQ9KD`!E!`!+3Qp[Db"8EfpXF`!E"!!",3#3"!e +(Eb"dEb"3B@F!!!)3!!S!0J!)!!!!3!!"!*!0"J!"!*!&"`!#!*!&#!!$!*!! +%!*!&#J!&@!J!6J!,!!B!!!!"!!`!#&J)!%i!$3!(!%EGZ`!1!!N!!!LJ!!!$(!" +1&F3!Jrq3"!"3506rN!3%4QpZG"K"FQPKE#"09#"$EfjNC@jcC@3J6'PRD(3!N!3 +,3ACKER3J4f&bC'8!N!383QpNEfjT)%e8)&9XG(*K)%*[E'3!N!3(3Qp[DfeKEJ# +3"!G$D'PMB@G[!*!%"d0[GA*TCA)!N!3)4'9XF'KTB@i!N!3*4A0`H5"6B@jc!*! +%$N9cF(NJ8f&ZFb"#EfaN!*!%$'9AEh*XC#"8D@GSG!#3"!p(BA*KE@pZC#"1BA* +bEhF!N!3'4f9ZCACK!*!%'%GTE'`J8f&ZFb"$EfjNC@jcC@3J3QpXC!#3"!P)C@a +fCA4TBf%!N!325'9XGQ9dD@0K)%*XB@0V!*!%&%KPE(CPG'PMB5"$Efe`FQ9cFf9 +N!*!%#%YXB@jR)%e8!*!%$8aeBQ&XD@iJ4h*KF'J!N!306(9MD@4K)%*bD@GSG!# +3"!G0B@0SD@jP!*!%"Ne[EQ&ME`#3"!K09#"&H(4bB3#3""*1)%KPE(CPG'PMB5" +1BA*bEhF!N!3)6Q&ND@&ZEQ8!!!%3!")!,J!%!!!!3!!"!*!,$J!!!!m!!!!A!!! +!B3!!!(%!!!##!!!!L3!!!)m!!!#8!!!!RJ!!!+8!!!#Y!!!![`!!!-B!!!$C!!! +!p!!!!29iG#"09!#3"!42ERPi!*!%"NpiCQpbC!#3"!K3B@aKG'PZE`#3"!j6Bh* +TF(3J693J3QpXC!#3"!96GfPZC`#3"!C6H@eLEf`!N!3)9'9XCA4PH(3!N!3&9'P +YCA-!N!3(9&4C4QpZG!#3"!eDBA"Q)%0SB@jMCA*j!*!%$9TKF'BJ4'PZCf*KG(- +!N!3%@Q9KE!#3"!T#BA0dD@pZ)&4$%4`!!!T$D'PMB@F!!!!d!!%!!3!3!!3!!J! +"!*!+!3-!N!91*V`#!"%!!ri!&`2r!"J%!!!C"!%!'J!!!4@!hDr[`!8`fp48p2# +I#6K492V8e4eCH9Ndf"ThNE"8#J,Y9@38$68540`54&hA&PY(39e38&"9(#N"A8` +$S$Y1$8!&'"!3XȔb6`pma5")0J-2C4X8$Bc*h*G+@A&8Gd#90eIB%PGB&KE% +Af`9XJXm50YSc6JG35(4PV63!Y)8!"#8d!"("%P,a99B5"8R"j#-V&!m#&CGC80I +PeK8m'A0i5a2EI*A,*$300$A@AY-FY2b5YT@8a4AFFXJ0*pH6JdhE9A88m(a382' +0J892!A54(@fTCDl#'j0aQ5!,5c@P%3kf@&13!-3)#4PV9GANE-EDP9Y9%&9"C40 +0*(K0!9c5-,!IF64N-I$N@%j6%i,j&6)dr!!&!*!%!Bi!!!#3!!!"!!m!#!!!!"! +!!3#3$J%Z!!!!*!!!&R!!!!"1,$!!6L`S!%iX*2rr!%iX2+T9UP@U9DT9!!!!2!! +!&Q`!N!8"!*!&#!!)!*!*5!!!!%J!N!8"!!%!!3#3"8iX,!#3"!'U!!!!)!!!&QJ +!!!!"!!!!!3!!rrm!!!#3!!!"!!m!#!!!!"!!!3#3$(rm+!S!J3%F!!8!N!QA$%P +ZFf9bG#"8B@*XC3!S#J!!!%3!6KA%!*!r4!"1&F3!N!Y3!!8!#`!%!!!!%!!"!*! +,!3!!!!)!!!!$!!!!"!#3#cJ!6KA%!*!BJ!!!*!!!!!D!qVB&CS!!"3#3"!'E!!! +!N!!!!3!2!!J!!!!3!!%!N!N4!*!&J!"1&F3!#!!!!&"*P!"35A`!8%PN!&"*6!" +3563!8%NF!&"*"!"351`!!!!m!%i9a!)!#!!!!3!!!%EGZ`"'hEX",!!!!X,el!# +3"!*m'$%!j5*&!!)!N!AC!%iR6!"1*'`!!!!B!%i9a!#3"33!N!@3!!!#!!i!#!! +!!"!!!3#3"`S!N!8"!*!(#!!"!*!(+!"1&F3!!IqG!*!I'!"1&F3!N!8#!!!!%!! +"!*!('!"1&F3!N!8#!!!!%!!"!*!(+!"1&F3!!IqG!*!(8!!#!!i!"!!!!"!!!3# +3#`d!!J!'!!3!!!!)!!%!N!91*'3!6L(B!*!(,!"1&F3!!`!!!!`!N!C999Ie!!! +!'!!!!"1*B,N)$%,X6riHIqrKe@@Q3SkJ!!8!N!3"Q!!!!*!!!!%!$`!)!!!!%!! +"!*!13fpZG(*[E#"3B@jPE(-!N!3,!!"'D@jN)%CTE'8!N!3+!!",CANJ3f&`F`# +3"!S!!%j[G'8J8'&N!*!%&3!!8Q9MC@jd)%&`F'aTBf&dD@pZF`#3"")!!&*PBf9 +ZG#"%Ef0eE@9ZG(-!N!33!!"5C3!!!*!!!!%!$`!)!!!!%!!"!*!(#`#3$!X,#`# +3*!%!!3!"!!%!!3#33e!!!3!2!!3!!!!3!!%!N%F3J0e[kFe[J(2VJSkkMT*33!! +)!*!&$!#3"3J!N!8-!*!&#!#3"3`!N!8)!*!&$!#3"3J!N!8-!*!&"`#3"!')!!! +!5!!#!!B!"!!B!!J!!3#3"!)#!!3"!!!$!!!!"!"1*i3!6L)J!%iRL!"1*i!!6L4 +3!*!E-!!#!!!!%!!!!!)!!3#3#8iNU!#3#`%!6L5m!*!,-!!#!!!!%!!!!!)!!3# +3"`)!6Ld!!J#3"!%!N!8$!%iNZ!#3#c!!!`!&!!3!!!!)!!%!N!P!rjN!JImb!*! +A-!!$!!8!"!!!!!J!!3#3#9,rQ3#Prc)!N"GJ!!)!!!!S!!!!!3!#!*!%rri!!!! +"!*!%!3!!!3#3"!%!!!%!N!3"!!!"!*!%!3!"!3!!rrlQNJ!"!*!%!3!!!3#3"!% +!!!%!N!3"!!!"!*!%!3!P!3!!!!`!N!AF!!!!!3!#!*!&b!!#!!!!A!!!!!%!!3# +3#3%B!!(@4)S!N!C!J1D53)$JaJ!!!!%!N!935GJ!!2P8!!(j9!"1ECB!G!+X!%i +bF!"d$E`!G!*b!!#%@J"1!*!9!3!"!!%S!!$P)N8!$!#3"%#!jT*!J1$'!!!!!3# +3"9"*f!!!q93!!IP8!%jYPJ"d!U`!6M*`!(30[!"d!R)!!)4D!%i!N!P1+5J!6LM +-MJ#3"!d!N!93)!!!!3!!!%!!!3!!!"3!(!!"!!%!N!91*q`!#!!!!!B!!!!#!!! +!N!!!!!!"!!!"!!!!%3#3$%iRp!"1*V`!$`#3"@!!!!"8!!%!!!"%!!!!!3!"!*! +&!`!$"NGPEQ9fB38#'`!%8b)!N!D!6MD8rrX!!%PA!(3#&LLN!!&B#!"c3J!!6LL +-!%i!!!BM$E`!N!D%@J!+!*!%!T!!!!!!'!#3$8iXl!"1)L3!N!FU!*!*!Irr!%i +Nc!"1*pJ!6LM)!!i!!!!"!%iS!)"P!F`!$J#3"4!!N!8%!!!!#!!"!*!(*!#3"3) +!&!!3!!%!N"S"kJ#3#8iNE!!!!0J!!!$B!%iR6!!!!%iRG!"1*U#!9iRN)!#3$`( +@4)S!!3#3#JX,#`#3*!%!!3!"!!%!!3!F@,%!N!NiX@-!N!8&!*!,25*&!3#3#&d +L43-!!#i!N!@I)N8!N!R6)N8!N!J"$#*&!*#p!`!!!!`!N!F"!*!A6L4X!!!!JJ! +!!38!%Rrr!6m!2!!q!BJ"LArr!8!!1`"1*'`!!!$'!!!""!!*!BS!N!3"eN5+!$X +"M!'0Irm!!!!3!*!&"!!!!!S!!3#3"3X!N!A3!!!!2!!"!!!!,!!!!!%!!3#3"8i +QA!"%!!-"h3*h!BS!Y!'D!QB!A3*P!BX#G3'+!Q8"L`*e!!!I4!#3"i3!6LJJ!!" +I3!!!!Qi!!!C8!#F!!!!"!!!!!3!!!#F!!!'+!Q8!6LGX#!%!+J#3"!%!!CX!N!S +"03#3"8iT0!#3"8iT3!"1)GJ!*`!!!BS#C3#3#9d#C3"G!R8!!"mN!%iNX!!"!!) +!6L5J!%iQh!"1*Z"DcJ!!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.6K.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.6K.hqx new file mode 100644 index 000000000..59775ec23 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/HanMac_2.0.6K.hqx @@ -0,0 +1,94 @@ +(This file must be converted with BinHex 4.0) +:#QKKENeKBe4PFh3!4&*%-NK0C()"!!!!&jm!N!5p1NKC6&-#%!#3"!3X!!!AR`! +!!Q`!6N#",mB!Fq5q3)%ddN#"03i!!!!`rrmJ!*!%"4!Zr`#3"rm"rrr)!!!9IEi +!!pF+!!G`eJ!+!%i4N!"!J5eN!!!!%rq3"!&@!K!3,[m!N!3"!9B#%!!!!"0!J1P +J!!!!(!!!!!)!!!!B!!!!%!&@![m!6f2N3)$Z5!jeEL"`CA4TG#"PFh0KDH4!J!# +3"4F&B[m!N!3"!(hVk!"pdN3!IG*%!(2P%J"pqC3!IIQ8!!!!r`!!!2m!#`!%!!K +!V!!A"@)!Fq@L!!G!0+!BNi+J'*1#!9B#%"!Zr`#3"rm"!!!!!3"1(X3"##CY!%i +Ha!"cjMi!!!!4eQ`!6K,%rrr)!!!9IEi!!pF+!!G`eJ!+!%i4N!!$-5i`!!!!%rq +3"!&@!K!3,[fEX#i!!3&@!K!!!3!6$R9Z)("PG'Pd)'9cFf&T'!!!!"!"9J,r!%p +Mj%#!lNJ!G!2`!!#J)`"@dX`!6f2N3)!!N!8A"@,pQl!Z!!%!IH[S!(h54!"pdN3 +!FqAb!(hjP!"pqC3!!!$r!!!!r`!,!!3!#%#X!"F&BJ"cjS)!"d!dS"L6JU!BNi) +"9J)3%#lpQl!ZrBd!!"aS!!&GS!"1(X3"##CY!%iHa!"cja3!!!!4eQ`!6K,%!3J +!N!F(!!!HI,q5!!!H9!!!r`!"9J)3!!X!FqCf!!I!A!!!!(hVk!"pdN3!IG*%!(2 +QK!"pqC3!IIQ8!%iHa%#"ja)!6Kl%!!!!Q!!,!!3!Fmc+ChB!!!0!!#J!G!2`!!S +35J!!K&S!F`"'!(2LQJ!!!2m!N!9d!*BJ#!"c!(1!MJ#3"3@J!d#!TDS!N!D!9Vi +)!!!&1J!!rr`!F(28!(4G'!#3"!)!!(4IPJ"`ZS!!G!!B!*!%!J!!Fq+k!'1fPJ" +dA4J!!!)!'$i!Fq+Q!!!!&!"ciUB!!!!85&P-8`)3!*!%"#`!N!Pc$R9Z)("PG'P +d)'9cFf&TBiRH!(4IPS"@[JL!9X%8!(2LjJ"Lpa`!G&q'!(2M1J"LpY3!!`#3"2r +m!!!&1JTS!*"(r!!#!!%!!3!"LGi!G&q@J&Dq#)"@`43!Fq,Q!',h(!"dAiB!Fq- +k!',fe!!$!*!%rr`!!!8k#QJ!N$9cid)!B[6D!*!'J&B!!!"c!*!S$3#3"33X!*! +*$!#3"!BX!*!*!`#3"!C*!*!*"3#3"!db!*!*"!#3"!he!*!*!3#3"!j6!%i`(!# +3"3%!N!31TJ"1,f`!N!8'!*!%$[J!N!N(!*!%$i!!N!N)!*!%$r%!N!N,!*!%%!m +!N!N+!*!%%#i!N!N"!*!%%&-!N!N*!*!%&j!!!*$r!*!U%J#3"4d!!!!4J2Uf2pj +jPecrqq0`+"3rrkS!#3#3"!ET!!!'hB$TR8KcUSfS#U!!N!8#)!3Me(rrrrrSZ!" +rrj!k8lIJ5Lf'hdXY0ZRrrrlBhCcQ#Kqrrj!&rKrhb9F!N!3Mrr`!N$S&J)SmdJe +1iQiR4rrrkkD'&')rX[q3"ZVre!qJ!!!!!rbUS!#31KmQRJQENYX2SL8m!!!(29E +m*QS"6!#3"N`!Kk!!!!!"rP93!*!k$S%`+RLT6$DfXP-5Z!!!&(r1f+`#)!#3"3+ +!&B8Irrrrqi!!Irq31NHX9S5ZKZ[r%UAAd!!!&hb'RNb!%J#3"JEJ$G#Mrj!%G8! +$rj!kql!![4PP52CRK'9(rrrCFHl4F1iracb2rj!&(pCN(rrrrreA!!rrN$VU&jC +R4b@Fk1pLk@C8TIrrr0F%ajf1(pAIGrq3"FIeM9r!!!!!"Re93!#31MCI1Nl86U1 +FS"3(Vk!!!'M@f@IEi(f'B!#3"!(!8bdr2rrrrr8!!2q31[la0XQTL0Q"$J83m!! +!*Jp,b)D!q`c!!*!%!i#Qji!!!!!)Urr!!*!k5GplEb"BGF3`fJCrrrdL38h2rHI +%rj!&mreKBIq3"0P3!2q31[l$!X861pDQTl!Mi!!!BST$aaJ4`9!!N!9!(VkJ!!! +!!Ep98!#31Je%Q&`pK9Fph,m(rrrVSM*-2m*rrj!%3IrhIqdVrj!%b"99rj!krNG +AFm+%%FA!p%'+'#B@IrrpPYchZA3%m!#3""jZ!&3!YU!!!!!"Re93!*!k$'C[S3Z +plX`rRma@6mIrrqV!-!ehmhrrN!3RmrpIqJq(!*!%'998!*!k!l98G8bU,$FaKPU +RRrrrHbaKHpjr4rq3"2!Ara2q!(MrN!6ae!!rrj!k[%l"0X2dI`LV3E)$4rrrfr) +pTPd"R!#3"!48!&3![U!!!!!"Re93!*!k$&3KHGLNR9,'TP3Irrq+KQijVqFrrj! +%KRrUrp*Arj!%Q#UVrj!kr-VKMV9)mIeh#90R!!!#AJ!,!*!&``!!!,H!pCa@2K& +Ua8Z,(4b&QhJ-Z##R(U980N-Z9iQi)eS%c6Q0`2"+qbCqZMI5KcqH(Y#4j9PFFpJ +IPC!!Z#8NVqRfI-@cH`&if-"Eei,q#e)BfZfi-ABl'B`QSaM,fhbrh!"p"rpD#B) +N(+#j'iAZAYl4d(5ak2'4G`,,pLC1'q4R6eXTHh-GjaXcKXYi"8Jch3&cNBUfTFS +j*S4ADl@DNPR&6XQ0$cck6,h1G[)flda%'jb'+61rITNk!!S!N!9H!!!!8S$kYUB +!N!31k[N@#p"@9e5X&mif2j6bCVE,qHFpTk'SlP'[@K[AeUjcKURrD-ZV,fQQ&m2 +Si)J*DkiApM-M%)UDJc"ET2UVVlSrrj-BZZ(dG!!"!*!&8`!!!%H"IC*,YpFkrhI +rkfeq9r9rrIrYNUi!N!4(rrJ!!&39&pC$9008K6eeH6Tp6AP&`!A!!-D(q"q!"J! +aBArrrrra99Arrq3`!!%!N!95!!!!4S&pNNZhecVrGrrVEAjAmrrbrq-Am!!!!!' +9IrJ!!%394$3(8K6elAj0TmEA&%d!5!!-B8d"F!"B!1A`!!!!!94rq!!!UB!!$!# +3"BJ!!!"mJ2j$[L(0(NX-56rQh#qqrmkGkTM%Q,*Q*cB0EN1[&S1&LhhMV'Tjk,r +j2PR`UdL!l1Zl"a18aq!0mXE,!h+aD!1M8BJ+Xm`m9E9%U4NJIm*[IPbcF8mR&h% +0eRD"#pq@ZJ%-[6@lL3CF8dE0m-P89Y%'dp9TShPKQpE`J!!0!*!&F3!!!'@!dHA +KiHFF*c(Gj&YRhA4`+6A@&h6D@L-2)23&AUDp*rrrrriQBD1C)+F58&bYAHJ-m'q +e[4H'#aD5a*5E@SQRD6ViKRDUF+[@&(d"C`D$`!!R)!be@HJGcZe*(Cl'Vl&rq$P +!`!!1!*!&(J!!!"+!qV1crrrrrX,SqrV%H[MrrmS!%3#3"4m!!!!6J1l@BbRF2r` +hT@MB*b(`@02mF!!3!*!&*3!!!"Q!rQ!!N!J"*1Nd@P)NIfL@[iJ'3!!"!*!%"cd +!!!FaJAf55lIA1[phrqYYIPIrrpArM&r!!!!!"PAri!!"%fI[AKH20@,a9pPq"dG +mj1Ik3AR*,dG0GA"DrAkGKDVp9V+55'ebaji(i!",eG68aAeG)YSiJH3#!!#2Nd[ +2(L)U+)f!J!!Rq9K!6J(iB!B+eiAMA2a&RjeJ8!!5BIGfH!IKH`"1A9kI3EhVlCb +4aq"-!!6TPA6aq"-%"8!C9EFI2eK&)CG6B'Ci%!!%&mVIeMi$!lY`$kl+&UkN--@ +K@'IKhKRi(rq11Tq(KRi(MT5IkIVLHQMV1S`crjTLH!`!!`VI2542!H%J!C(MRUp +hhE3PR!FhMJPeGA(`(J!"8T%p+&`%"DX-!9e48[Y4GFraAB!9e0EGpr$rrH'TiFC +jq[P4!(rVUSL!+#ZV2Jb4!GGehmrrmXG5pCehmq[r!m2#`c8&&D9PIP+EphIq'-" +`qJ"[hh&qIpdqdC9%899&0I8f(pPHAXCcG["(+!F!!(SrClmjk!F2eJ"PNf"cp28 +l8Cqr[a389F&808%N"-!!BrlpR4,%N!!F1(F!B&dF8d08959pRRd4A'fD!'iZ5!& +&3K53!*9K1*(G54NeY58G'i&3SJ"$I4RQMGTI"Q!'&!"Q&eCe29Kra&eC'!'jV`! +6fA+QARmp'00@[&8@&GFk449E%`(j,d!&CC@IGAUGYkIQIeKE)b$@Aj`rarrm+Af +l8G53!(5PD4)BA6NN(4E5mk"6"%68XG,r9rrdYX-'(CS5F&T-3%Sa%rAmG,2aGE5 +8Q"-G`FRr(m&r)meXcJ'-eG8A6RpId&SAm"'(Cd$93EXU1+IUrqSa1#1k9D@"bZ, +bXVDLH[PRlR@U5!i"q*ri4AkRbqYQCLLpi+[MSUDUV"U@Vk+*TQRhVMZ)H-rZrqS +-SbRTH$*)'#5FTSV#UL[J+#b)LCDU@6PKqCrq*CiF(i1`D'`5KS#eL1T`!'0rMri +qZ+5'$"`6#)`JKSi+&VVpU)TLT#0RQLSKi'ILIri-(3L2*3aL[qq2f(rrNImr#2I +rN!5+UUrrrj'0S9S1f*L'1S,l%3!!i!B[J!!!!!UMrm!!!YDX`q&M%JfFGJJL!!% +`!PB(rj!%(8!$rrr@e9"@P&F3p18!#08Y4+fh2EHemb"-%h95#hfGl&rrpk@hrlh +#Z!!!!!&Q99!!!'Mk"6e9PLqpE458*9'hF+3JQmM#YJ!"8!)A"Iq3"-%-&9rrrc! +"N!#F-fYMGA90YCe+@J@---Fb$!&HP2rr'q#rlX23!!!!!Brq93!!"d5V4eT9Eq[ +I86dFI4bRA-UY-F!!!qQ`"kkJi!!!!!-+rr!!!+L&Xl,VIQerUFU92+da$hr*'-S +$f(XBML1TPPSSa$NLFZ--!FTd[rrrrrQ#UVrrrMHL[+ML,kU*)D0#iR26H-%EP)I +iarp19-!!!!!)kU2m!!!TkL1[mcTMrM5jc[$J'32d+)Dj)@J0+8Ik(VJ!!!!"4e9 +3!!"TpDrPmKR'&fe[*lmBN!#!"*C(9!#G!Iq3"-`99Irr-dAr9*IkSjer62kI@m+ +LNccA1Fq'[D"d)PGS2k,`UPVNZ#`T+r@LTU5kmLcMZZVSLPJd6*P'C'[hIArj8!) +rmY,0IrrrrrQ#UVrri'rl@314K6"&jZa[3YbK%L9Z!aFE'DNG@(JBdj2LIrd8)hP +C&5&0PHp9mEFBdd+kpE"RhTLf!"1*darcU&-!N!3QVrm!!++!)D"PIr%IC#rbjm* +#Y[pUp[TQKqV)bE3,cF32j5@@X9CAk8N!&#d01&UAhcfcA-`D*b8qZ-[!"EdB+Ar +)[A!!!!!#c+UJ!!`Z`$hVG2rbclPE[-A%PbrcbQ2ESchIU0AAiXiQq!3`$`F('Lk +Ybb+*bZEC)eXLeYZPRE5XGHHhJ!b5YYJ"@&(rN!5LDU[rrLErTU+@pi[!Q-lKm4h +i3jqe53mjRI[GF*m$8-c5-$3K!Pe(aa,B8e#jGbJ6)"!E")8dp%hjB@)lrlrpL&p +2AjPPXrq3"-e99rrm9rcp[kX`0-&Rql-hK"K8RkYS--jB6X3p8`6fhGK)dM%F3%p +Keq6a*4P9p'8"9IdCfde[+QQB!%@cTc,bM,pHqCrrrrrqq+U[rrLfrkTP0hLQ#Kc +q0E1V+M6p@fQXYDreNBr2U&3S6VTd*i%Bj5(5"iq%LB'$J91b%X0$T"N'Ir)h6!6 +mUld(rj!%`$99rrm+PrhC,LIl*F%(qD"TLYU0HH5@fk`VbAN@Y!rqT*drPrrHkqe +T%dUUHMQZh5HV--5`!1e'5&r`3X$!!!!!$k2r`!!VU!*$[VaKkr%Ch0$F3C,Zc`f +FcH(@,*HPqR'BK"ILaaSU+L"qrVDTUr#qG@Zq*C[mrNIrk1'[[2HLIj`U)!h`,!! +#m8[&)VEFrjT!+!!HMMVK"$#rrj2,UrpGBRRrN!6YQUVrriA[qd[(icTJRjIkaBG +fqVGVUU#,+hMeiS#RfkQ[`!!2!*!&$`!!!!1!rT!!`lm!!!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/JazzLotus.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/JazzLotus.hqx new file mode 100644 index 000000000..0433dc446 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/JazzLotus.hqx @@ -0,0 +1,40 @@ +(This file must be converted with BinHex 4.0) +:"(4PH(3!5PG34%T"@PS!N!@K!!!)Xjk)9@iJCQPMD'PPFL"dCAKdC5"ZEh*YB@` +0$@0PER4PFJda,$8JDR9cG'PQH3eXC@Cd$6)JDR9cG'PQH3eUGA0dD@Cj)'&XE!d +J$5!-)("KCf8J-L"NBA4P)&0PF(4PE@*PFL!h,#!b-$)`)(4TE@8J16S`0L""63e +`B@GP)$)JC'&dC5"6CA"dC@eLCA)J0b`J-M!b-#"dD@eP)$Nk-$FJ38eLD`!!!3! +!!!HG!!!'R3!!!4B!N!B&6@&bBfJ!N!S&3A"bD@`!N!3%G'9iG(J#!!!!5PG34%T +"@PS!N!S1G`#3"%TA8%4+39TD!*!BfhZRG!!!!%`!!!LcCA)!N!B(6f0dEf*PFJ# +3#!K1EhCPE@*PFJ#3"`K%C@0PE@*PFJ#3#2m!!`#3"#`J!!!J!!!!,#!!N!F"6R8 +!!!!`!!!)!2rr!*!R#!!"!*!*HJ#3"3)SU!#p"$J![!!#++!!!!!%!!!!)J#3$J2 +S!!!!""!#$!$r!*!)!`")!K`!5!"X!6)"D!#3(`)Rl!#3#'"r!*!*,#A3++JPd#L +S!*!(e33i!*!0!3#3$`J!!3#3#AS!N!8#+*J![33i!,`!!LL8!!!!"!!!!#)!N!i +$k!!!!!33!J`!r`#3#!-!5!)F!%J!E!%b!@J!N"m#*qJ!N!JES!#3#5ad9LLBG&B +SQ!#3"p8%1!#3$3%!N!pL!!%!!!!-!!Ara(fU!")!BJ%"!!%!!!!#!!Ari&GL!,m +"Z3"9!!%!!!!#!!Arr%+5!"i!LJ$Y!!%!!!!a!!2rr3J"!!%!!!!'!!2rr``4!!% +!!!!'!!2rrKB(!!%!N!Pk!*!&!LHi"3S%1!)B!!)RU!!!!Qi!!!1'"!!!!!*Z!!! +$*J3!!!!$k!!!!!33!J`!!!J!!3-!N!3$!%J#(!")!'`"-J&S!*!I!LHB!*!)628 +!N!N)!!%!!!!2!*!&HRqb!!!!!LH`!'!%1!*i!!)RS!!!!(J!!!#@!*!1!qJ!!!! +%%!)-!*!&!3!!!J!$!%J#(!")!'`"-J&S!*!I!LHN!*!)%E-!N!N)!!%!!!!6!*! +&HM#N!!!!!LLd!%J%1!,!!!)R[!!!!(`!!!#D!*!1!qJ!!!!%%!)-!*!&!J!!!3! +$!%J#(!")!'`"-J&S!*!I!LHd!*!)9Pd!N!N)!!%!!!!C!*!&HKR"!!!!!LHX!$! +%1!,`!!)SZ!!!!*`!!!#k!*!1%iJ!!!!%%!)-!*!+!`")!K`!5!"X!6)"D!#3(`) +Rq!#3#(53!!#3#5`#ZbLd!VXRV!#3"JC#"$J!!$9&+*`###L3!!!!!!%!N!pX!'` +!N!85!')4!3crN!3"!!S!N!84!'%*UT!))J!0!!"I!$)!N!80!&m$!!-0!!SV!3S +%G'pdE`Rr!2m!r`$r!#)!!!"I!!`-!!%!!5)!$J!!!2)*UT!))f%!r`!!!@J"D!# +3"Em"Z4%"!3!+!*!&[`'j-J#3"Em"Z5!!S`"*!"F!55)!S`"$"J!L!*`!4J-!)J# +9!%-'!#)!MJ"'!`!L!)F!3`B!)J#!!%B$!#)!H3"$"J!L!()!4J-!)J"V!%-'!#) +!C!"'!`!L!&d!3`B!)J"@!%B$!#)!6`"$"J!L!%J!4J-!)J""!%-'!#)!1J"'!`! +L!$-!3`B!)J!X!%B$!#)!*3"$"J!L!"i!4J-!)J!A!%-'!#!!S`"*!+-"M5)!S`" +*!!BL!+-!E3!')J#M!*%!"L)!S`#e!!BL!+-!f3!')J#M!2d!"L)!S`%K!!BL!+- +"43!')J#M!@N!"L)!S`'0!!B$!!-0!!SV1DB"-#J!Q!!b!M%`+!#+!$)#-M!S!(` +!-J)c-#J!EJ!b!M3`+!"J!$)#06!S!&)!-J)f-#J!4!!b!MF`+!!f!$)#1$!S!#J +!-J)j-#J!'J!V!c%`-2m!!!#A!*F!N!8H!)S4!3%!#J!#!!)!(J#+#3$r!2m!r`$ +r)J!#!%8!(#)!!J#*!"`*9C!))!!2!!)!$`#*!`!$$3!++cd0!6)T4!%c)!!G!!) +!(3#*+!!E!$d"0#Np!Lda)!!V!!)!+`#*!3!+!!%!!3!H!)S*!2m!r`$r!2mL!"i +!!3$M#9@3##%!!3#+r`!!!3!!!!HG!!!'R3!!!4B!!K8J!e!!!!!F!4B!!eG63e) +!"3!L9e"34!!&!'TA4%p$!!)!XP"*3e3!!J$@B(rrr`#3"3)P2"ZJrrm!!!#k!!) +PB%cerrm!!!&d!!)PE"'crrm!!!*B!!)Pi&CGrrm!!!,L!!)Nq(53!2rr!!!$E!! +#*9JPd2rr!!!!$!#3"(4@rrm!!!$'!*!%Il,rr`!!!GS!N!3`T2rr!!!#C!#3""R +"rrm!!!,Z!*!%!V[rr`!!!hJ!N!3e4Irr!!!!LJ#3"!))rrm!!!&%!*!%!3(rr`! +!!rB!N!4pU[rr!!!%*J#3"&GLrrm!!!5@!*!%3T,rr`!!"J)!N!4f&3: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/LightWayText_4.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/LightWayText_4.0.hqx new file mode 100644 index 000000000..a1b9c1e5f --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/LightWayText_4.0.hqx @@ -0,0 +1,16 @@ +(This file must be converted with BinHex 4.0) +:#(4PH(3d,Qah!&4&@&4-9e4&!*!&i`!!!XMFSd%JFfeKE'`J6'PRD(4ABANJ9'9 +iG#!d,M80BQpXC#"TG'&XD@-JG@jNCA*XD@jP$6%i)("[D@jdFb`J-6)JF'pTER4 +c$80SD@0KCfmX)%0[GA*TCA)0$5m[)#!YN#S0,bmJ)&4SDA-JC'pMG@ePER3JGf& +c)'eKC'8JGfPdD#"-D@GSG&GKH94PH(3Z$5m[)#!YN#S0MTi!!!%!!!!#EJ!!!@i +!!!"D!!!S[3C'D@jNCA)!N"8)G'9iG$3ZE(F!!J!!!&4&@&4-9e4&!*!-9%9B9%a +A9%8!N"M2Y6K"!!!!i`!!!XJ!N!`'e58!!!!S[3Y0FeG[FQYc8(*PCJ#3&i`P!!! +!+,d26h"dD@pZFb"N*d9iBf9X!*!5"XdP!!!!+,d,8(*PCQ9bC@jMCA-!N"(b!!` +!N!8,!!N!"!!!!!N!N!ND!!X!#3!%!3!!#3#3#4i!#`!*!!3!!!!*!*!*(`!,!!N +!"!)!!!N!N!NP!!X!#3!%!!!!#3#3#5B!#`!*!!3%!!!*!*!*,`!,!!N!"!!!!!N +!N!N`!"J!%J!%!!!!%J#3#6X!%!!-!!3!!!!-!*!*43!3!!`!N!8-!*!*6J!-!!S +!&J!!!!`!N!P@!!`!#J!$!!!!#GeV#-)'SJ!!!%J!$%GPEQ9fB3#3'`3!"!!q!!- +"h!*m!$i!!`(F!N(2Y6K0!!!!'3!!!"N!N!NS!*!'!3%!!3-B!Q3!)J!L![B#3J# +3"!-B!Q3!!3!!!!-!!`$5!!!"!!!!!Qi!!!&Z!!!!@J!Hr83D&!!!!"`!@J!#Fh4 +jE!!!!"T08&05!!!!*NaA8e)!!!!b!)$rr`#3#!2Yrrm!!!$f!*!%!qMrr`!!!8) +!N!65SJ: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MacDoc_1.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/MacDoc_1.0.hqx new file mode 100644 index 000000000..b60c596d9 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/MacDoc_1.0.hqx @@ -0,0 +1,41 @@ +(This file must be converted with BinHex 4.0) +:#R4PH(3a,QeNEf-!684NBde%GR)!N!J(r$Q"!*!%!3!!!!H#!!!'JJ!!!(TKG'0 +[68*-6Im!N"F+G'9iG$%ZE@4[B`!#!!!!684NBde%GR)!N!T04'4M684fFJ#3'-q +e0)3!N!B(r!#3$6BP!@&dBfp8B@*Xr`#3(K)P!@&dBfpA8d98r`#3(UmP!@&dBfp +PC(4dr`#3'%!"-)!#!!!'GM%Z-bi`-M%Z-b`JU6%j16FJE@&MEQ9dD@-JFfpQG(G +KFQ8Z)%&XE#"5D@GSG(-J8Q9cCA*fC@3Z!!!!,!%`J!)!!!Cf-5ic,M!H3h*PBA4 +PC#"hDA4S)(4SC5"0B@0%Ef-J9h*TG'9b!!!!r[e8D'Pc)'4[Bh9YC@jd)(GKFb" +MFQ9KG'9N)(GTG'JJG'KP)%eKBd4[Bb"AFQPdCA)JB@jN)'0KEL"LC5"bC@&N)'& +ZC#"`FQPZG'9N)(GTG'JJG'KP)%eKBd4[Bb"@D@9hCA)Z$3e'Eh)JCR9bG'KPFL" +TEQC[FQeKG'P[EL"KBQpeG#"0B@0%Ef-X)("XC@&cC5"fDA0TG#"[GA)JGf9L)(0 +TG'8k)(GhGbjYB@0ZCA4TBbjNC5"[FL"MEfjdB@0d1L!0$8PZG'9bEQ9d1L"TEQC +[3'eKBfjPG'PM,Q4P$80[EA"e8f9bGQ8k)'eKBfjPG'PMAh0[CR4hBA*P!!!%N!3 +!N!3$'!*N!"%#r``!rri!!!")!!!!5!#3"J-B!Q3!N!8b!$Z!!J",Iri!-J!lJ!) +!5Arq!#`!#`!3#&"KE'&dD@j[!!!$!"!!$3!-!#i!"!#3"5Y%459K)(0YB@aX)%& +MG'%JCQPXC5!SFf&fC@3JGfPdD#"0B@0%Ef-T!!%!#J#3"!-B$k!!F3!D!$m!0`" +&!$S!2`!h!%8!0`"#!$S!2`!h!(!!'J!r!$F!43!k!$m!0`"&!$F!3J!k!$m!0`! +"!!S!1`"$!%N#-`!k!#N!*@%JFfeKE'`J3@0dB5"QD@aP)#KcBACPC#"hDA4S)%e +KBd4[BbN!!!%!#J#3#6)!5B!#!&GrrJ!k!!3"!!!U$J4LEfaN!!3!!!!T'!%J!!! +%!J!!+3-'DA4KE'PM!!3!!!!T'`%J!!!%"!!!+3-*G@jNCA*XD@jP!!!"!!S!N!3 +$'!qJ!(%!'J"0!$F!8`!k!%d!0`"6!$F!8!!k!%d!0`"`!"S!63!h!&-!1J"0!$F +!8`!h!&!!1J"0!$F!!3!+!%N!3`"A!M-!1J!%!3!!+!"6!%3%BQpXC!!!"!!!!#N +B!5!!!!3#!!!T!`CTG'&XD@-!"!!!!#NE!5!!!!3%!!!T!`PeEQ4PFQaTEQ8!!!% +!#J#3#6)!9i!#!'9rrJ!b!&H!!J"VIri!"!!!!!d!%J!S!'B!4!Sa1#"`EfPZG(- +J!!!0!!`!+8d*-6)JF'pTER4c!!!"!!S!N!3$'!qJ!(%!'J"E!$F!B3!k!&X!0`" +K!$F!AJ!k!&X!0`"`!"S!@`!h!'%!1J"E!$F!B3!h!&i!1J"E!$F!!3!+!&F!3`" +V!M-!1J!0!")!+!"Q!%3+-6JJF'pTER4c)!!!$3!-!#P0#6%b)("[D@jdF`!!!3! ++!*!*-J"VJ!)!Ihrq!$)!Di!#!(YrrJ!X!!S!&JG$Eh9bD@9b!!-!&J!S!(F!4!K +$Eh9bD@9b)!!!!`!!!#Ni"d0SD@0KCfm!!!%!#J#3"!-B$k!!F3!D!'m!0`"e!$S +!E`!h!(8!0`"b!$S!E`!h!(!!'J"[!$F!G3!k!'m!0`"e!$F!FJ!k!'m!0`!"!!S +!D`"$!(X#-`!k!!-!&J!S!(F!4!K$Eh9bD@9b)!!!!`!!!#Ni"d0SD@0KCfm!!!% +!#J#3#6)!Hi!#!)YrrJ!k!#J!K`"8"f&Z)'PdC@d!!3!+!*!%!aJ2S!"a!"S!I`" +(!)8!5J"r!%F!K3"(!))!5J"r!%F!F!!D!(m!4`#&!%S!I`"(!)8!4`##!%S!I`" +(!!%!#J"l!&-!L`)c!$S!+3!(B@iJDA4PE3!!r`!!!3$fIE")r(i!3)c-CEVmIJ" +!l@9%m9lCbjS!QIhE!2a`$JfVhXcMm4-Mc-#p)rJr0fkV*&TpP'B#4Z85)L$rCJB +XrfB#**@D49&f`P9'P1DH*3#CANEYUV@'Rq+UZ9"fZlQ[Q@[hrb#D5'Gk@bLVCa6 +iGf9@5llBLJ$+Ca(-l@IN*@J%D9K9"'i3T(&0#IS%E[f3!,h!L84RrGZi95Nil'F +4`*aR5$3iDNr28D4LcjQ$YjE0X@QNG!`h++"R&VMfGN3SAj&`$(&R%8#NB45!-Q% +9)LGK+2VdB4C84NHm8pFI,AKXB5M)ef%SqNUbbM46CaC-rS)',$X%D8`'KHF%rfF +4p!!!!3!!!!H#!!!'JJ!!!(S!BQX`'qS!!!!F!(S!!hCPFR-!!3!L8e45)!!!!$T +04("R!!!!4Ne%Eh!!!!"5!!(rr`#3#3,rr`!!!%3!N!5rmrrr!!!!G!#3"3(rr`! +!!AB!BQXJ!)$rr`!!"Ai!N!5a4`: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_4.5 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_4.5 new file mode 100644 index 000000000..725f9ad4f Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_4.5 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_Pro1.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_Pro1.0 new file mode 100644 index 000000000..82e5d8608 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MacWrite_Pro1.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_1.6L.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_1.6L.hqx new file mode 100644 index 000000000..9ec88a892 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_1.6L.hqx @@ -0,0 +1,222 @@ +(This file must be converted with BinHex 4.0) +:"(4PFh3!68*#9%e03N)"!!!!1)i!N!3drdD3"$#3"cB`-$!a-$!a4!%h0d&"!c# +3#MK#-*!)!M%`-$&%!M%#,6G&4N)h488`!MJ`N!B#-!*&JJ)d1$!`0$J#,6)#16% +#0c%a!6!"-6!"088"0M8#,6+#!N-a!N-c!N-a!N-c!MBb43)``J8#1$-#0$J#0c% +a!M)`0J&'N!5"J3%`JS)#-3)d4$4%0$)d-J)a-$3#-!)b3J)`!N8c!63i!6!$-$! +`-6#3"M3e-*!(-3)`!M*%33&"-$Jd!M!"-N3#-!%b4!)`!MNa!M3i!MFa-3)b-$B +"-N4"!6!"-`%i46!`!6)#0c!e!M3i!MFa-3)d1!)`!c!`-$)`N!8b46#3#3!b4%% +X9@iJF'9dDA3JG'9cG!d0Bf9ZG'9b$A*TCfKd$@TeFh4TCRN0DR9cG'PQH5"KE'` +J$@*eE'aPG!eTEQ4PER3JD@i0B@j[G'KPFL"TEQ4PER30BR9XE'9d$6%Z05"TER4 +PFQaTEQ80-L"TER4PFQaTEQ80-6)JF(3JD@jdCA*XD@jP$@4PCQ&eE(3JG'PYC5! +a-Jd0C'&dC5!a-Lma-Lma-JeNBA4P)&YG)'&ZC#"dD@eP)&YG)("KCf8JER9YBQ9 +b)&YGF'&RC5"MEh9ZG&YG)("KCf9ZG@eLCA)[BfpeER3J@ed0$@C[ER3JG'PYCA- +X)'0[GA*TCA)X)'4PE("SD@&Z,#"PFh"j,#"YEfjKBfmX$6%b)("d,#!a0#"`G#` +J-cBJF(3X)!eZEh*YB@`X)'*[E'3X)'PdB@aTBb`JG@jNCA*XD@jP,#"hEh*N)(9 +ZC'9bE'PZC5`JC'pdG'9N)(9ZC'9bE'PZC5`JC'peBQaP)(9ZC'9bE'PZC3e[GA4 +XD@jP,#"cD'&NEhFX)'0[EQ4PER0P,#"PH(4PEQ3X)(0dFQPVCA4SFR8X)'*[H'& +XE'CXB@Gc$@0[E'pb)'*XB@0V,#"RFQ&j)$3e*5`JB@0aG@%XFh9`CA*cBh*TF(4 +cG@*cBh*TF(30CQPbFh3J-#ib03eXC@Cd)$!Z-M80FQPRD(3J-#ie$A4KBR-JE'9 +QG#"MC@jdCA)JFQPRD(3JC'9MD@eKE!ecB@eP)(GTG'JJE'9KC'9b$6-JF(3JBQ9 +QEh*P$6-JF(3JB@CdCA)0@eeEAA0[E@8JCQp[G'j[G'80+#"K)(*eE'8T$9YG$5J +JB@j[G'KPFLN0@ed0+#"K)'4[G@*XC5!T$9YG$5JJEfjP)(GTG'JJF'&dG'9bEL! +T$9YG$3d-F'&RC5"LFQ9KD`dIFfpQG#"SHA!ID'9Z)&938%953d&643ecEfeP)(0 +jE@*[E##hZ-)0$3-`-$!d-*!&-60%-*!'-c3#-)%#36B"-J*"1!%c!N%j!6!#3M) +"-3*#0!%c!N-a!6)a!N-c!6-#3d3"-M)#3dB"-`*&-3%b-`*&-`%c!NBa!63#4N% +"03)a-$3"0J)a-%%"0`)a-6)"-`)a-6N"1!)a-M!"13)a-MF"-`)a-c!"33)a-cB +"3J)a-d8"3`)a0$N"4!)a06N"43)a0N)"4J)a0d)"-`)a0d-"-6!#-6Je!6%a!M% +i4!%a-J)a16F"-6-#-6P'!6%d!M&"3J%a03)a388"-8%#-8)f!6-#-8-d!6%f!M& +$43%a0`)a4$3"-6J#-84'!6%j!M&&1!%c!M)d4J%a3J)b06%"-8-#-M8c!6-#-MC +#!6&%!M)f4!%c!M)h13%a43)b0d)"-`)b1$N"-8B#-MK#!6-#-N%a!6)`!M*"-`% +c!M*%3`%c!c!`-$8`N!Bh4$#3"M%h!M#"!NB"-3)a0J%b!M&$!6-#-M3"0!)c-3% +e!M-i!6B#0$)"0`)e-3%e!M8i!6J#0MB"13)h-J&"!MJb!6!#-88j!8)#-8Bd!8- +#-8C&!83#-M!i!88#-M)h!8B#-M-i!6%`!M)d0!%a-3)b0%B"4J)b4%%"-!)b4%- +"-!-`-$!f-*!&188b-*!'-M3"-`%`JB%"13%c!6#"JS,""!&'N!5"J3%`!N-#3c# +3"!)``JS#-`)``JI"))+#`31#J3%a!6!"13%c!6#"!M%`N!8#--%%!8D3")'"!6! +#3`*$-*!%!M$##J)a!M##JJ)h06-c0$!#-))#-J)d46&%0N-"--%IJS,"!i+"!6% +"-!%j!6-"-)%#-6#3"3)``33"4T!%JB%"-!*$!N-`N!3#--)+!M%#-)+#!MFe-c- +d-!)`!MB#0!)d46&%0M3"--%IJS,"!i,"!`%j!6-"-)'#JX%%!8D3")'"!6!#3`* +$-*!%!M$##J)a3`)`JS)#0c8c-c3`!M$#!m%JJS,"!i)"-3%`J3&"!6)"-)'#JX% +%!8D3")'"!6!#3J*$-*!%!M$##J)a!M##JJ)h06-c0$!#--)$`5##JX%$JJ%b!6# +"!8)"-`%`JB+#`33"4T!%JB%"-!*%!N-`N!3#--)+!M%#-)+#!MFe-c-d-!)``J2 +"))+#`31#!6-"-)%"3`%c!6#"JS,""!&'N!5"J3%`!N3#3c#3"!)``JS#-3)`JS) +#0c8c-c3`!M$#!m%JJS,"!i)"0!%`J3&$!6-"-)'#JX%%!8D3")'"!6!#0`*$-*! +%!M$##J)a!M##JJ)h06-c0$!#--)$`5##JX%$JX%$!8-"-`%`JB+#`33"4T!%JB% +"-!*&!N8`N!3#--)+!M%#-)+#!MFe-c-d-!)``J2"))+#`31#`3-"-8)"13%`JB+ +#`33"4T!%JB%"-!)b0!)b0$#3"!)``JS#-3)`JS)#0c8c-c3`!M$#!m%JJS,"!i, +"!`%j!6-"-)'#JX%%!8D3")'"!6!#4!*$-*!%!M$#!`)Y-6#3"!)``J8#-3)`JS) +#0c8c-c3`!M$#!`%Y-3%``4k#JX%$JX%$!6N"-`%`JB+#`33"4T!%JB%"-!*$!N- +`N!3#-!)c!M$##!)a!M##JJ)h06-c0$!#--)$J3%Y-3%``4f#JX%$JX%$!6N"-`% +`JB+#`33"4T!%JB%"-!*$!N-`N!3#--)+!M%#-)+#!MFe-c-d-!)``J1"J3%Y-3% +``4b#JX%$JX%$!6N"-`%`JB+#`33"4T!%JB%"-!*$!N-`N!3#--)+!M%#-)+#!MF +e-c-d-!)``J2"#!%Y-3%``4D#JX%$JX%$!6N"-`%`JB+#`33"4T!%JB%"-!*$!N- +`N!3#--)+!M%#-)+#!MFe-c-d-!)``J2"#3%Y-3%``4@#JX%$JX%$!6N"-`%b!6# +#JX%%!8D3")'"!6!#3`*$-*!%!M$##J)a!M##JJ)h06-c0$!#--)$`3F",6%"--% +AJS,"!i,"!`&"!63"-)'#JX%%!8D3")'"!6!#4!*$-*!%!M$##J)a!M##JJ)h06- +c0$!#--)$`3-",6%"--%EJS,"!i,"!`&"!68"-)'#JX%%!8D3")'"!6!#4!*$-*! +%!M!#-3)``JJ#-3)`JS)#0c8c-c3`!M$#!m%%!5da!6$"'S+#`31#`3-"13%c!6# +"JS,""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3`!M$#!m%&!5da!6$ +"'B+#`31#`3-"13%c!6#"JS,""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8 +c-c3`!M$#!m%'!5da!6$"')+#`31#`3-"13%c!6#"JS,""!&'N!5"J3%`!N-#3c# +3"!)``JS#-3)`JS)#0c8c-c3`!M$#!m%,!5da!6$"%i+#`31#`3-"13%c!6#"JS, +""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3`!M$#!m%6!5da!6$"#i+ +#`31#`3-"13%c!6#"JS)"1*!%JB%"-!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS) +#0c8c-c3`!M$#!m%JJS,"!i,"!`%j!6-"-)'#JJ%fN!3"4T!%!813"!%`!8D3")' +"!6!#3`*$-*!%!M$##J)a!M##JJ)h06-c0$!#--)$`5##JX%$JX%$!8-"-`%`JB+ +#`33"4T!%JB%"-!*$!N-`N!3#--)+!M%#-)+#!MFe-c-d-!)``J2"$!%c!6$"%S+ +#`31#`3-"13%f!6#"JS,""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3 +`!M$#!m%0!6-"--%4JS,"!i,"!`&"!6B"-)'#JX%%!8D3")'"!6!#3`*$-*!%!M! +#03)`JJ)Y-6#3"!)``J8#-3)`JS)#0c8c-c3`!M$#!`%Y-B%"-!%Y-B%"-!%Y-3% +``3-",6%"--%'!5da!6$"#i+#`31#J3%a!6!"13%c!6#"!M%`N!8#--%%!8D3")' +"!6!#3`*$-*!%!M$##J)a!M##JJ)h06-c0$!#-!)a!NB`!M4&-83e1!%``4-"13% +``3U#JX%$JS%"-3%`!6N"-`%`J3)a-*!&!M$""!&'N!5"J3%`!N-#3c#3"!)``JS +#-3)`JS)#0c8c-c3`!M!#-3*'0!)d46&%06!"--%6!6N"--%+JS,"!i+"!6%"-!% +j!6-"-)%#-6!b-$!d!M$""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3 +`!M!#-3*'0J)d46&%0c3"--%IJS,"!i+"!6%"-!%j!6-"-)%#-6!b-$!d!M$""!& +'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3`!M!#-3*'1!)d46)`-%-"--% +IJS,"!i+"!6%"-!%j!6-"-)%#-6!b-$!d!M$""!&'N!5"J3%`!N-#3c#3"!)``JS +#-3)`JS)#0c8c-c3`!M!#-3*'33)d46&&4N-"--%IJS,"!i+"!6%"-!%j!6-"-)% +#-6!b-$!d!M$""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3`!M!#-3* +'3`)d46&%0$!"--%IJS,"!i+"!6%"-!%j!6-"-)%#-6#3"3)``33"4T!%JB%"-!* +$!N-`N!3#--)+!M%#-)+#!MFe-c-d-!)`JJ*'43)d46&%-cJ"--%IJS,"!i+"!6% +"-!%j!6-"-)%#-6#3"3)``33"4T!%JB%"-!*$!N-`N!3#--)+!M%#-)+#!MFe-c- +d-!)`!M%#-6!b!M4&-83c-!%``4q#JX%$JS%"-3%`!6N"-`%`J3)a-*!&!M$""!& +'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3`!M!#-J)a-$3#0%8a4$)i!6$ +"(i+#`31#!c!`-$F`N!9"-6%`N!Ba-J%`JB(#$-%%JS'#!M3#--)'!M%b!6$"!`& +'N!5"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6#"JB,"!i)"-3%`JF) +-`35#JB)#-3)``JB#-6)"--%$!8D3")'"!6$#"-%%!8D3")'"!6$"")+#J3)b0!! +d-#`!N%!"-)'"JX%$JJ%b!6#"`Jc"")+"JJ)a!M$#"J)a-J%``3-"4T!%JB%"--) +%`33"4T!%JB%"--%%JS+"!M)d!$3`,!#33!%`JB'#`31#!6-"-)(#$-%%JS'#!M% +#--)'!M%b!6$"!`&'N!5"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6# +"JB,"!i)"0!%`JF)-`35#JB)#-3)``JB#-6)"--%$!8D3")'"!6$#"-%%!8D3")' +"!6$"")+#J3)b0!!d-#`!N%!"-)'"JX%$JX%$!M%b!M!#,6%b!M$##-%%JS'#!M) +#--)'!M%b!6$"!`&'N!5"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6# +"!6%`-$!#--%$JX%$!M-f!M!#,6%b!M$##-%%JS'#!M%#--)'!M%b!6$"!`&'N!5 +"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6#"!6%`-$!#--%$JX%$!M9 +"!M!#,6%b!M$##-%%JS'#!M%#--)'!M%b!6$"!`&'N!5"J3%``J6""!&'N!5"J3% +``35#JS%#-M3!0$!X!*"!!6#"!6%`-$!#--%$JX%$`J-#-6J`-$!#--)(`35#JB) +#-3)``JB#-6)"--%$!8D3")'"!6$#"-%%!8D3")'"!6$"")+#J3)b0!!d-#`!N%! +"-)'"JX%$JX%$`J-#-M#3"!)``JI"")+"JJ)a!M$#"J)a-J%``3-"4T!%JB%"--) +%`33"4T!%JB%"--%%JS+"!M)d!$3`,!#33!%`JB'#`31#`32#"3*$-*!%!M$#"F% +%JS'#!M%#--)'!M%b!6$"!`&'N!5"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$! +X!*"!!6#"JB,"!i,"!i+#!M%b!M$##-%%JS'#!M%#--)'!M%b!6$"!`&'N!5"J3% +``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6#"JB,"!i,"!`)a-J)`!Lda-J) +``JM"")+"JJ)a!M$#"J)a-J%``3-"4T!%JB%"--)%`33"4T!%JB%"--%%JS+"!M) +d!$3`,!#33!%`JB'#`31#`31#!M%b!M$##F%%JS'#!M%#--)'!M%b!6$"!`&'N!5 +"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6#"JB,"!i,"!m)-`35#JB) +#-3)``JB#-6)"--%$!8D3")'"!6$#"-%%!8D3")'"!6$"")+#!63#-3)a-J)`JJ) +b!M)f!M##!M-#-dB#-))#0!)e-3)`JJ)b0!!d-#`!N%!"-)'"JX%$JX%$`Jc"")+ +"JJ)b!M$#"J)a-J%``3-"4T!%JB%"--)%`33"4T!%JB%"--%%JS)"0!)a!M%b!MB +a!M!#-J)b0J)`JJ)c!M0'!M##!M3#06%#0M)#-!)b0!!d-#`!N%!"-)'"JX%$JX% +$`JF#-`)``J2"")+"JJ)a!M$#"J)a-J%``3-"4T!%JB%"--)%`33"4T!%JB%"--% +%JS)"0!)a!M%b!MBa!M!#-J)b0J)`JJ)c!M0'!M##!M3#06%#0M)#-!)b0!!d-#` +!N%!"-)'"JX%$JX%$`JJ#-`)`JS,"")+"JJ)a!M$#"J)a-J%``3-"4T!%JB%"--) +%`33"4T!%JB%"--%%JS)"0!)a!M%b!MBa!M!#-J)b0J)`JJ)c!M0'!M##!M3#06% +#0M)#-!)b0!!d-#`!N%!"-)'"JX%$JJ-`-$!i-*!&-NBf-*!(03!d-#`&9'PYCA- +!N$Xd-#`'4f9ZCACK!*!j!63"-!%a0!%``JX#-3%`!$3`,!G$Eh9bD@9b!*!j0$! +X"NGPEQ9fB3#313%d!6!"-6B"--),!M%"-!!d-#`)4'9XF'KTB@i!N$Jd-#`'4f9 +ZCACK!*!j!63"-!%h4$F"--),!M%"-!!d-#`*4A0`H5"6B@jc!*!h0$!X"NGPEQ9 +fB3#313%d!6!"-MBh-!%``JX#-3%`!$3`,!C0EfjKBfm!N$Sd-#`'4f9ZCACK!*! +j!63"-!%d!6$##`)a!6!$-$!`16#3"M&#-*!(-J)b3J)`!M%i-J)b0M8#-N)#-!) +a1$)#-MBe!c!`-%%`N!Ba4$#3"c)#1$-#0$J#-N4&!M)`0J)i-`)d1!)b4%8#-M! +f!c!`-%)`N!Fe-*!(-J)``JF$-$!`3c#3"M%h-*!(-3)b4$L#JJ)c3d)#4MB"06J +#08@#!6!$-$!`4M#3"M9$-*!)!M)e!6%#4%B#3cF#-!)d13)c0J)b363#-8Bd!M8 +i!M3i!MBe!M9&!6-#0%8a4MBd!M$""-)'JB'#JB(#"-%&`J2"")+#JB%"-3)``KF +#,6-c-$Fc-d)e!M$#"!-`-$%c-*!'0d8`N!J"4!&"!6N"-8B"1!&$!88"-8-"-83 +"-88"-8B"0dB"-8)"-!!d0#`",3!!!5i!!!'Q!!!"`J!!!FB!!!'Q!!!"T3!!!D) +!!!%Z!!!"*`!!!5)!!!(8!!!"e3!!!G)!!!(6!!!"b3!!!F!!!!&'N!5"J3%`!8D +3")'"!6!$-$!a0$#3"M9"-*!)!M4&-83f3`)e!M%`-$%h!M&$!M$#"F%%!$*$,!# +3#$%d1M!i!*!J45`!N!i$-$!a0$#3"M9&-*!)!M4&-83f0!)e!M%`-$%i!M*#!M$ +#!`)f!M$""!!b3b`!N!F'-6)[-M![-6)!N"e&,!#3$J-`-$%d-*!'0MJ`N!J#0%8 +a4$8i!M8#16!`-88#0J)`JJ)Y-8D3"6%c!M!#-3)``33!-N-X-3#3,%8X!*!1!c! +`-63`N!Bf1$#3#!)d46&%06!#03)j-$!a43)f!M##!Lda4T!&-%B#-!)b!M$""!! +b3b`b!*!X45`!N!i$-$!a0$#3"M9'-*!)!M4&-83h0!)e!M%`-$)c!M&%0!)``J- +#-3)``33!-N-X!!)!!J#3+88X!*!1!c!`-63`N!Be4M#3#!)d46)`-%-#03)a-$! +b-`)a4$3#--)$!M%#--%%!$*$,!!#!*!V45`!N!i$-$!a0$#3"M9'-*!)!M4&-89 +'3`)e!M%`-$)c!M&$0J)``J-#-3)``33!-N-X!!F!N#Y&,!#3$J-`-$%d-*!'08B +`N!J#0%8a4$3`!M8#-6!`-M-#-8-f!M$#!`)a!M$""!!b3b`!!3!'!*!T45`!N!i +$-$!a0$#3"M8j-*!)!M4&-83c1!)e!M%`-$%j!MF#--)&`33!-N-X-3#3,%8X!*! +1!c!`-63`N!Be4$#3#!)d46&%-c!#03)a-$!a13)h!M$#!`)a!M$""!!b3b`c!*! +X45`!N!i$-$!a0$#3"M9&-*!)!M4&-83b1!)e!M%`-$%j!M&%!M$#!`)b!M$""!! +b3b`a)'pQ)$-!N#G&,!#3$J-`-$&'-*!'0cJ`N!J!$`!!!%J!5!#3"!,`!N$rmIr +Z!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3!#!!!!!5F2!!% +!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"-$3a36#3"M8i-*!)!*!%!C%#G!",!!) +!N!m"!*!-"c%Z-$!JD@i(-5ic-#"TEJFa,M)b)'PZ"c%Z0$!JD@i!N!m34T!%-*! +(0M!`-$%`-$&%!6Fh38%$-*!+0d3`N!8d-83#-6!`-83#-3)Y08Bh4MG&46!#1$# +3"J)Y0$#3"`)`JJ)d1$!`0$J#,6)#1$-#1%B"-!%a-!%d1!%d-!)Y-B)#--)+!MJ +c!M3i!MK'!M)`0J&'N!5"J3%`JS)#-3)d4$4%0$)d-J)`JJ)b3J)`!N8"0$J"-!- +`-$!a-*!'-cN`N!Fa!M!#43%i0!)`!6%#-!%a!M!#1$-#0$J#1%B#-M!f!6#"!6- +"1%8`-!%`!MJc!M3i!MK'!MK#!M!$-$!`-M#3"M%b-*!)!%8XB5"cE@&XE#"SC@& +NCA)$-$!`0$#3"cN`N!Fb!M#"!M%`!6!$-$!`06#3"cN`N!Fb!M#"!M%`!6!$-$! +`0M#3"M-b-*!(-3%``3-"13%c!6#"JS,""!&'N!5"J3%`!N-#3c#3"!)``JS#-J) +``JI"))+#`31#!c!`-$F`N!Bi-c#3"c%"-)'"`Jc"")+"JJ)b!M$#"J)a-J%``3- +"4T!%JB%"--)%`33"4T!%JB%"--%%JS+"!M)d!$3`,!#33!%`JB'#`31#!c!`-$J +`N!Bj1$#3"c%!0$!X"94TE@9c!*!l0$!X"NGPEQ9fB3#313%d!6!"-63"--),!M% +"-!-`-$!j-*!'-6N`N!Fb!M*#!M!#3c!#-MBe!M*#!M!#3c!#-MBe!c!`-%%`N!B +a3M#3"c)#1$-#0$J#1%B#-M!f!MJc!M3i!MK'!M)`0J-`-$"#-*!(06#3"c)#--) +(!c!`-%-`N!G&-*!(-3*&!M$#!i%#0$1#!6%$-$!`4M#3"M9"-*!)!M3`!6%#4%B +#3cF#-!)d13)c0J)b363#-8Bd!M8i!M3i!MBe!M9&!6%#-),""-)'JB'#JB(#"!% +c!6$"!m)$`35#JS'"!6%#--)A!Ldc-c!h-c0#03)``J3$-$!a-c#3"MG&-*!)!83 +"33%j!6&'!6J"3`&&!6&$!6&%!6&&!6&'!6G'!6&#!6!!0$3X!5d!!!%Z!!!"TJ! +!!F)!!!('!!!"TJ!!!D8!!!'L!!!",J!!!5F!!!%L!!!"e!!!!G8!!!(5!!!"d`! +!!FN!!!(!!!!"4T!%JB%"-!&'N!5"J3%`!dD3"$#3"cB`-$!a-$!a4!%h0d&"!c# +3#MG%-*!&0$&&!M%`-$&%!M%#,69'0dBh488`!MJ`N!B#,6-`N!F#-))#0$J`-$3 +i!Ldb!MJc!MK'!6!"-6!"0$J"0$!#,6'#!M$##J)i-`)d1!)i4J)b-$B"4T!%JB% +"-)+#!M%#0%3d4$3b0$)#-))#-N)#-!)i!63i!6!$-$!`-6#3"M-j-*!(-3)`!MJ +"1$3#-!%a!M!"-3)`!MJc!M3i!MK'!M)`0J%`J3%c!6K&-$!"-!)i-`)d1!)i4J) +f3`)`!c!`-$)`N!G$-*!)!$JXB5"QEfpdCA)$-$!`0$#3"cJ`N!Fb!M#"!N%"-!- +`-$!e-*!(1$#3"c)#-)%#33%`!c!`-$B`N!Bc-M#3"c%"--%$!6N"-`%`JB+#`33 +"4T!%JB%"-!*$!N-`N!3#--)+!M)#--)(`5##JX%$JJ-`-$!h-*!'1$-`N!Fa!6# +"JF)-`35#JB)#-J)``JB#-6)"--%$!8D3")'"!6$#"-%%!8D3")'"!6$"")+#J3) +b0!!d-#`!N%!"-)'"JX%$JJ-`-$!i-*!'16J`N!Fa!$3`,!98D@ePF`#31c3`,!C +(C@jPGQ%!N$N"0!%`!6%d!6$##`)a!6!$-$!`16#3"M%j-*!(-J)b3J)`!N-`!M) +f03)b3J)`!N-`!M)f03-`-$""-*!'-8)`N!Fb!MJc!M3i!MK'!M)`0J)i-`)d1!) +i4J)b-$B$-$!`3M#3"c8`N!Fb!M$#"`-`-$"$-*!(46#3"c%#1!)``J1"!M)dJJ% +a!c!`-%B`N!Be36#3#!)d-!%a!N4'!N-h!M!#0$N#-cB#-N%d!M&'0!)e1!)d1!) +f03)e43%a!M##`36#"S'"JS'"`J3"-J%``32#!m%%JS+"J3%a!M$#&`)Y-c-`0c- +c3M8#--)%!c!`-6-`N!Bh46#3#!&%!8%"13%a4J%i!8-"43%a3`%a4!%a43%a4J% +h4J%a3J%`!$3d,!%Y!!!",J!!!DB!!!(#!!!"aJ!!!DB!!!'P!!!"SJ!!!5i!!!% +R!!!")J!!!G3!!!(9!!!"dJ!!!G-!!!(*!!!"`!!!!8D3")'"!6!"4T!%JB%"-!0 +'N!3`N!Ff-$!`-6!`-83"0cG"33-`N!Sh46#3"63a4J)a-$!a4!)a!Lde4MG'0d9 +&-!)i-*!'!Lda4T!&-6-#-))#0$J`-$3i!Ldb!MK'!MP#!6!"-6!"0$J"0$!#,6' +#!M$##J)i4J)d1!)j3J)b-$B"4T!%JB%"-)+#!M%#0%3d4$3b0$)#-`)`!M*#!M! +#3`%d1!%`!c!`-$%`N!Bc36#3"c%#-!*$!6Jd!M!"-3)`!6%#-!)i4J)d1!)j3J) +b-$B"-J%`!6-"1$J`-!%`!MK'!M4&!MP#!MG%!M!$-$!`-M#3"M%`N!N!3baEA@% +JCQp[G'j[G'8$-$!`0$#3"d-`N!Fc!M!"-3)bJ3*&!6)$-$!`06#3"cJ`N!Fb!M# +"!N8"-!-`-$!f-*!'3c)`N!Fc!6)"-)'"!6N"-`%`JB+#`33"4T!%JB%"-!*$!N- +`N!3#--)+!M%#--)(`5##JX%$JS%"-3%`!6N"-`%`J3)a-*!&!M$""!&'N!5"J3% +`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3`!M##!M-#0%8b0d%i!6$"%`%j!6$"#S+ +#`31#`3-"13%c!6#"JS,""!&'N!5"J3%`!N-#3c#3"!)``JS#-3)`JS)#0c8c-c3 +`!M$#!m%JJS,"!i)$-$!`0c#3"MJc-*!(-3%`JB(#$-%%JS'#!M)#--)'!M%b!6$ +"!`&'N!5"J3%``J6""!&'N!5"J3%``35#JS%#-M3!0$!X!*"!!6#"JB,"!i)$-$! +`1$#3"MNi-*!(-3!d-#`&9'PYCA-!N$Xd-#`'4f9ZCACK!*!j!63"-!%a0!%``JX +#-3%`!c!`-$N`N!Ba16#3"c)#-N)#-!*$-!)b0M8#-N)#-!*$-!)b0M8$-$!`36# +3"M&#-*!(-J)i4J)d1!)j3J)b-$B#1%B#0$J#18)#-M!f!c!`-%)`N!Fe-*!(-J) +``JF$-$!`3c#3"dB`N!Fa!N-#--)$!6%#-ND#!6%$-$!`4M#3"M8c-*!)!M3`!6% +#3M)#18%#-!)c13)c0J)b3c%#-M""!M3i`J-"-3)`JX%%`JD"JB+"JF)%!6%"--% +$`J2"")+#JB%"-3)``KF#,6-c-%4&18-d!M$#"!-`-$%c-*!'0d8`N!J"4!&"!6N +"-8B"1!&$!88"-8-"-83"-88"-8B"0dB"-8)"-!!d0#`",3!!!5i!!!'Q!!!"`J! +!!FB!!!'Q!!!"T3!!!D)!!!%Z!!!"*`!!!5)!!!(8!!!"e3!!!G)!!!(6!!!"b3! +!!F!!!!&'N!5"J3%`!8D3")'"!6!$-$!a0$#3"M8j-*!)!M4&-MG"1!)e!M%`-$& +'!MB#--)&`33!-N-X-3#3,%8X!*!1!dD3"$#3"cB`-$!a-$!a4!%h0d&"!c#3#MG +'-*!&0$&'!M%`-$&%!M%#,69'0dBh488`!MJ`N!B#,6&'N!8`4J)`JJ)d1$!`0$J +#,6)#1%B#18)"-!%a-!%d1!%d-!)Y-B)#--)+!MK'!M3i!MP#!M)`0J&'N!5"J3% +`JS)#-3)d4$4%0$)d-J)c!M!#-N)#-!)a-3%d1!%`!c!`-$%`N!Bc3M#3"c%#-!) +a-3%i0!)`!6%#-!%a!M!#1%B#0$J#18)#-M!f!6)"-!%c!6Ji-$!"-!)i4J)d43) +j3J)j13)`!c!`-$)`N!Ba0M#3#!!a-5aEAA0PBfpZC#"QEfpdEQpdC3-`-$!d-*! +(4$#3"c-#-!%a!M+"!M%c!6)$-$!`06#3"cN`N!Fb!M#"!M%c!6!$-$!`0M#3"N- +b-*!(-`%b!6#"J3%j!6-"-)'#JX%%!8D3")'"!6!#3`*$-*!%!M$##J)a!M$#"m% +JJS,"!i+"!6%"-!%j!6-"-)%#-6#3"3)``33"4T!%JB%"-!*$!N-`N!3#--)+!M% +#-)+#!MFe-c-d-!)`JJ)c!M4&-MFb-!%``4-"13%``3U#JX%$JX%$!6N"-`%`JB+ +#`33"4T!%JB%"-!*$!N-`N!3#--)+!M%#-)+#!MFe-c-d-!)``J2"))+#`31#!c! +`-$F`N!Bi-c#3"c%"-)'"`Jc"")+"JJ)b!M$#"J)a-J%``3-"4T!%JB%"--)%`33 +"4T!%JB%"--%%JS+"!M)d!$3`,!#33!%`JB'#`31#!c!`-$J`N!Bj1$#3"c%!0$! +X"94TE@9c!*!l0$!X"NGPEQ9fB3#313%d!6!"-63"--),!M%"-!-`-$!j-*!'-6N +`N!Fb!M*#!M!#3c!#-MBe!M*#!M!#3c!#-MBe!c!`-%%`N!Ba3M#3"c)#1%B#0$J +#18)#-M!f!MK'!M3i!MP#!M)`0J-`-$"#-*!(06#3"c)#--)(!c!`-%-`N!Ba-*! +)-3)a-3)``J-"-3)d3S)"-3-`-$"'-*!'06-`N!J#0$!"-3*#-J)j33)`!M-j!M- +f!M*$-3)b-%%#0$M#!`%a!M##`36#"S'"JS'"`J3"-3%``32#!m%%JS+"J3%a!M$ +#&`)Y-c-`4%8j3c3#--)%!c!`-6-`N!Bh46#3#!&%!8%"13%a4J%i!8-"43%a3`% +a4!%a43%a4J%h4J%a3J%`!$3d,!%Y!!!",J!!!DB!!!(#!!!"aJ!!!DB!!!'P!!! +"SJ!!!5i!!!%R!!!")J!!!G3!!!(9!!!"dJ!!!G-!!!(*!!!"`!!!!8D3")'"!6! +"4T!%JB%"-!-`-$%d-*!'06N`N!J#0%8b0c)`!M8#-6!`-8B#0J)``JA""!!b3b` +b!*!X45`!N!i$4NC'46#3"cB`-$!a-$!a4!%h0d&"!d!D!!!!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_3.5.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_3.5.hqx new file mode 100644 index 000000000..759f96828 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MarinerWrite_3.5.hqx differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MaxWrite_1.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/MaxWrite_1.hqx new file mode 100644 index 000000000..7d1777a0f --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/MaxWrite_1.hqx @@ -0,0 +1,12 @@ +(This file must be converted with BinHex 4.0) +:#8eKH&GbDA4P-3"09d0868&B9`%!N!3R!!!#4kY`9'9iG#"[CL"0BAKAFQPdC3e +bC@3J)'0SD@0KCfmJ-63JF'pTER3JTTX!!!%!!!!"`!!!!-!!!!#(8dP8C90*9%` +&!*!A#8eKH&GbDA4P-3)!!J"09d0868&B9`#3#J)!69G$9%e"@&F!N"M6B5e9!!! +!*`!!!NF!N!h(*3&83N)eG(4bE`%!N"d#"9&0358&38%`"!*!G!5FP!99YJ6C +"8&"-!J#3'$`!#3!'!#1H-!!MRLbU9DT9!#1H*!!!!!%!!3!!!"%!!J!6!!-!&3! +!!"B!"!!A!!!!(J!&!"m!!!!Srrm!!!"X!!3!%!!-!!%!N!X"!"!!$!!"!!!!$!# +3"`%!%!!-!!%!!!!-rrm!N!8"!"!!$!!"!*!%rrm!N!8"!"!!$!#3"3crr`#3"3% +!%J!1!*!&$[rr!*!($!!3!!`!%J!1!")!$J!!!3!!!!(!!!!!`!!!!)F!)jlm'i` +!!!!F!&S!!P0dH@`!!!!D8h483J!!!#C-ENKP!!!!-J!"!*!()jc8!!%!$`!!!%! +!)jeF!!%!(J!!!,!!)je8$NeKH&GbDA4P)&0dH@aP$NeKH&GbDA4P)&0dH@aP$Ne +KH&GbDA4P)&0dH@aP10%!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_1.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_1.0 new file mode 100644 index 000000000..d737a3902 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_1.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_3.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_3.0 new file mode 100644 index 000000000..c8f69db64 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_3.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_5.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_5.0 new file mode 100644 index 000000000..24a37a876 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWord_5.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_1.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_1.0 new file mode 100644 index 000000000..39a40cf5a Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_1.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_2.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_2.0 new file mode 100644 index 000000000..c8a60e704 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MicrosoftWorks_2.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MindWrite_2.1 b/writerperfect/qa/unit/data/writer/libmwaw/pass/MindWrite_2.1 new file mode 100644 index 000000000..d9b8687b2 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/MindWrite_2.1 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/More.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/More.hqx new file mode 100644 index 000000000..e2689751b --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/More.hqx @@ -0,0 +1,123 @@ +(This file must be converted with BinHex 4.0) +:%N%JFfPYF'aP)'e[FQ8JCQPXC3"06e)c68p5-J%!!!!G"`#3")2I!!C06e)c!)! +!!!#!!!!!H!!!!2J!!!'d!!!#V!!!!+J!!"%@!!!"0J!!%N`!!!!S!!!5G!!!!!J +!!"*m!!!!2!!!'SF!!!!N!!!5d`#3#J08!!!0`J!!%VJ!!!!A!*!G$`!!!%J!5!# +3"!,`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3! +#!!!!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!*!1'3%&S!@J"D!&S!%"!Y!$j`2 +R!!!!!`!"!!!!!`!-!3%!$!#3"!(J!S!!*!!N!E`#A!#3#3%!!!%!!!%!!J!"!3! +"!2q3"!!$!!%!!`#3"!%"!!%!N!8"!!(rN!EGD`M#"U,rrJ!#!!%!!!!"!!)!!!! +#!!%!!3)!!JX#U2q3'!%!!3!!!3%"!!)!!3!"!!)Y!!!"!!%!!!2R!!!$j`!!!qI +rr`!-!*!-%!#3#!%!!3%"!!!K`!!"!!B(+'0[ER3Z+3#3#3%"!*!%)GeV#-)'SJ# +3"[q3$!#3"[q3"J#3"[q3$!#3F`%!N!8&!!Arr`!'!#N!!`(8!Jd!N!N8!!!"i!+ +!!!J!"!!p!$d!!!!"rj!%!D`##`#3$3%!!!!4!!!!%!!!!!%!!`!(##!!!!"dqZJ +!G3J"!'S6'!!!#)3!#3!%!!!!G3"q,e3!G2VS!(5`U!!"3YB!!88%3)(A-!"U%[J +!DK,B!"!!#!!)!!-&2!!$"6a$lRi!!!3!$`!!!!J!"!#3"bN!!3!!!3J!!!2r!!! +!(`#3#3%cN!B!!P@3"J!$Ij!'!!5CN!B!"EZ3"J!'hC!'!!IrN!B!#2`!mhd&,`! +*mYF)9S6X!!VGD`M#"U)!#`*"Ue6Ur`!-!!#!!"'`!!d!N!68!!!1Irm!!(rr!!p +rrcrr!!!!%2rrrrf!!!!4rrq!!2rp!",rri!!J!!!%i!!rj!%!"5!!IrrJ!!!&B! +!J!,rr`!@!!#!!)!!!"F!!'CQQCN!'2rrc*!%!"R-N!B!'Xc-QC!%!"[-c*QCCQB +!(-c-CQBc-`!Gc*!%QCN!(TQ3"'CQ!"pQN!3c-`!#!!!!(%*"3dY39&*1rj!)!*! +0!J!!!"a#380,8&456P@r9Ip9reAr2rirrMrq2rirrMrq!!)!!!!F3N&$5e"88Nj +9ZeAU9Ep9VPrpAreIr9rpAreIr3!#!!!!(%*"3dY39&*19DT9UP@U9DTrrhrrIrp +rrhrrIrm!!J!!!"a#380,8&456P8L9BK9!P@)RrZIqjrlRrZIqjrl!!)!!!!F3N& +$5e"88NkU!+S!UJ#U%,rk[rUrqVrk[rUrqJ!#!!!!(%*"3dY39&*1L!!J!)J!)J$ +IqYrkhrVIqYrkhrS!!J!!!"a#380,8&456J#3#2q3$!!#!!!!(%*"3dY39&*1L!! +L!+J!)J$m!20p"5rm!20p"5m!!J!!!"a#380,8&456P@r9Hj9qeAZmYF)9S6XmYF +)9S6X!!)!!!!F3N&$5e"88NjhhAIGGpehhGeV#-)'SYeV#-)'SJ!#!!!!(%*"3dY +39&*19D*9+P@U95S#3DY8k[m#3DY8k[m!!J!!!"a#380,8&456P@r9Hj9qeAZ!!# +!!"'`!!#!!"'`!!)!!!!F3N&$5e"88NjhrphrGrrGr`#3"03!N!A8!!!#!!!!(%* +"3dY39&*19DT9UP@U9DS!N!ErN!B!!J!!!"a#380,8&456L+))SJLL#+)!*!'rj! +'!!)!!!!F3N&$5e"88Nk)!#!!J!3!!2rrrrf!!2rrrrf!!!!#!!!!(%*"3dY39&* +195"9!&8L93$rri!!rrhrri!!rrd!!J!!!"a#380,8&456P8L9BK9!P@)rrq!!)! +!rrq!!)!!!!)!!!!F3N&$5e"88Nk)!#!!L!!L!)!!rj!%J!$rN!3!!J!!!"a#380 +,8&456US!)J#U!#S!J!(rri!!J!(rri!!!!)!!!!F3N&$5e"88Nj9)P@+95*9US! +!J!,rri!!J!,rr`!#!!!!(%*"3dY39&*19EY9kP@r9Di!!)!!J!!!!)!!J!!!!J! +!!"a#380,8&456P@l9Ip9[eArIrmrr`!!Irmrr`!!!!)!!!$f!!%!!!!F!!!!6J# +3"2rr!*!&!T!&IJ#3"B!%!*!&#!!)!*!*5!!!!%J!N!8%!!%!"!#3"fi!N!34%4% +!%!!!)"!!!#!3!!!J%!!!)"!!!#!#)L)J!*!,$`!!0#9'(2rr!!'$!)eQrrm!!J' +4#CfIr`!$!*!("!#3"`8!N!F'!*!("`#3"`J!N!F*!*!(#J#3"`X!N!F-!*!($3# +3"`i!N!F2!*!(!J!!!2B!!3!!!"`!!!"1!*!%rrm!N!8#N!9q!*!&J!3!N!8)!!J +!N!P)!!!!5!#3"33!!3!%!*!(EJ#3""%4%3!3!!!J%!!!)"!!!#!3!!!J%!!!)!) +L)L!!N!X2!!$[r`!"!!%!!HrrC(KYS3!#Rrm!!3!"!!-!N!F%!*!("3#3"`B!N!F +(!*!(#!#3"`N!N!F+!*!(#`#3"``!N!F0!*!($J#3"`m!N!F#!!!!pJ!"!!!!(!! +!!%i!N!6rr`#3"3+3"Ai!N!@!"!#3"3J!#!#3#8J!!!")!*!&"!!"!!3!N!GZ!*! +%%4%4!"!!!#!3!!!J%!!!)"!!!#!3!!!J!L)L)!#3#`m!!+!!S!#J!!!"hrrIrpr +r!!*3!&!!8!!!!`#3"`3!N!F&!*!("J#3"`F!N!F)!*!(#3#3"`S!N!F,!*!($!# +3"`d!N!F1!*!($`#3"`)!!!$f!!%!!!!F!!!!6J#3"2rr!*!&!T!&IJ#3"B!%!*! +&#!!)!*!*5!!!!%J!N!8%!!%!"!#3"fi!N!34%4%!%!!!)"!!!#!3!!!J%!!!)"! +!!#!#)L)J!*!,$`!!rrq!!)!!!!(rrlJTYEB!!VrrB!"J!!!$!*!("!#3"`8!N!F +'!*!("`#3"`J!N!F*!*!(#J#3"`X!N!F-!*!($3#3"`i!N!F2!*!(!J!!!2B!!3! +!!"`!!!"1!*!%rrm!N!Vr!*!&J!3!N!8)!!J!N!P)!!!!5!#3"33!!3!%!*!(EJ# +3""'3"!#3&#+3"!#3#`m!!$3P4Kcrr`!"J`#0C[rr!!)"N3QGRrm!!`#3"`3!N!F +&!*!("J#3"`F!N!F)!*!(#3#3"`S!N!F,!*!($!#3"`d!N!F1!*!($`#3"`)!!!$ +f!!%!!!!F!!!!6J#3"2rr!*!+r`#3"B!%!*!&#!!)!*!*5!!!!%J!N!8%!!%!"!# +3"fi!N!34N!3!N"3LN!3!N!X2!!$rr`#3"3([rf4iED%!!Trr!!%!!3!$!*!("!# +3"`8!N!F'!*!("`#3"`J!N!F*!*!(#J#3"`X!N!F-!*!($3#3"`i!N!F2!*!(!J! +!!2B!!3!!!"`!!!"1!*!%rrm!N!Vr!*!&J!3!N!8)!!J!N!P)!!!!5!#3"33!!3! +%!*!(EJ#3""'3"!#3&#+3"!#3#`m!!+!!S!#J!!!"hrrIrprr!!*3!&!!8!!!!`# +3"`3!N!F&!*!("J#3"`F!N!F)!*!(#3#3"`S!N!F,!*!($!#3"`d!N!F1!*!($`# +3"`)!!!$f!!%!!!!F!!!!6J#3"2rr!*!+r`#3"B!%!*!&#!!)!*!*5!!!!%J!N!8 +%!!%!"!#3"fi!N!34N!3!N"3LN!3!N!X2!!$rri!!J!!!!IrrZ#QeYJ!#[rpJ!'! +!!!-!N!F%!*!("3#3"`B!N!F(!*!(#!#3"`N!N!F+!*!(#`#3"``!N!F0!*!($J# +3"`m!N!F#!!!!,N*"3dY6584&!J#3#3(d!I3!N!3$k!2S!!%!)!#3"`%!"Irr!!) +!!!!Z3N&$5e0*4%8#!*!*!I3"p!#3"!2S!qJ!!3!J!*!'h@X)`JDL!!)!!!!Z3N& +$5e0*4%8#!*!*!I3"p!#3"!2S!qJ!!J!Jrrq!!2rpJ!#!![rr!!)!!!!Z3N&$5e0 +*4%8'!*!+%J%R!")"*`"R!Ad!"3!J!!"QCTQCJ!$rN!3!!J!!!#j#380,8dP%43% +!N!N"p!(d!*!%!qJ$k!!&!#!!!)!!%E"jRIrrB6-!!J!!!#j#380,8dP%433!N!N +"p!(d!*!%!qJ$k!!"!#"rN!ErN!B!!J!!!#j#380,8dP%43)!N!N"p!(d!*!%!qJ +$k!!"!#$GD`M#"U,m!20p"5m!!J!!!#j#380,8dP%43F!N!TR!9)!%J%R!'F"I3! +#!#!!N!68!-NfcrMrN!3!J3!!%ZX!!IrrJ)%!!"-2!!(rri#"!!!6-`!"rrqJJ3! +!&h3!!3!!`!N!!"R`!!%!!8!*!!!Fm3!"!!(!#3!!'PX!!3!"`!N!!"Tp!!%!!8! +*!!!DU`!"!!(!#3!!'aF!!3!"`!N!!"Y1!!%!!F!*!!!EFJ!"!!(!#3!!'j3!!3! +"`!N!!"Zf!!%!!F!*!!!Ee`!"!!&!'3!!'pm!!3!"3#%!!!!"!!%!!F!*!!!F"3! +"!!(!#3!!($%!!3!"`)N!!"ab!!%!!N!C!!!FK!!"!!*!'3!!(*3!!3!$3!N!!"b +F!!%!!N!C!!!FV!!"!!&!#3!!(,`!!3!"3!N!!"c-!!%!!8!*!!!Ff`!"!!*!)3! +!!!%!!3!#3#%!!!!#!!%!!N!K!!!!!`!"!!*!)3!!!!3!!3!!%ZF!"2rr!!!5l`! +%rrm!!"-6!!6rr`!!%cF!"2rr!!!F63!'c-`!!"08rrm!N!35m`!!%aF!!"8H!!! +AI3!!'L-!!"TP!!!Dr`!!'cB!!"YD!!!EI!!!'ji!!"Zr!!!El3!!("N!!"aD"NG +PEQ9fBB!!!`P)C@afCA4TBf%!&3"K!"8!CA4TBf%!&3#3"!%!!"caIrrM$J#3$aJ +!$!!"$")!!!2R$`IrpJ#3"33!!2d`!*!,'!!-!!%-%J!!!qF2"rrf!*!&"!!!r6! +!N!FC9'KTFb"TFb"K)(0KEA"XC5"MEfeYC@jd,J!!!FB!N!9Mlq3""!!!!'B!!!! +&!(!!!!"+!"N!Bqr`!'2`!*!&`cJ!N"%"!cLK!D%"S!'J!3#3"3)!"3!"!!%!!J# +3"!&S!@J@J"D!!!B!!!"a!!!!5J"`!!!!5J!B!'2[p!"Mlq3!N!6$1!#3%3%$1+% +"S3'J!D!"!*!&!J!&!!%!!3!#!*!%!@J"D"D!&S!!"J!!!(%!!!"+!(!!!!"+!"F +!Bqri!'2[m!#3"--i!*!4!3-iS3'K!D!"S!%!N!8#!!8!!3!"!!)!N!3"D!&S&S! +@J!!'!!!!F3!!!%S!F!!!!%S!&J"Mm!!!Bqrd!*!%`aJ!N"%1!aLK!D%"S!'J!3# +3"3)!"3!"!!%!!J#3"!&S!@J@J"D!!!B!!!"a!!!!5J"`!!!!5J!9!'2[j!"MlrJ +!N!6$1!#3%3%$1+%"S3'J!D!"!*!&!J!&!!%!!3!#!*!%!@J"D"D!&S!!"J!!!(% +!!!"+!'F!!!!&!!!#8J!-!"m-*`!!!qF$!B!#!*!&#J`K!!!$j`3#!"J!N!B-)J! +"!qF%!J!5!*!'$#F!!!2R$!m!N!J-)3!!!qF3"J!"!*!'$#)!!32R'3X!"3#3"J` +K!!!$jaN,!*!)$#F!!!2R+43!N!8+!"`-)!!!!qFV&Irr!!!!*J!!$#F!!!2R,"B +!!J#3"J`R!!!$jc-C!!%!!!!Q!"`-)!!!!qFd'J!'!*!'$#F!!!2R1"X!"3#3"J` +R!!!$jcXF!!)!!!"#!"`-)!!!!qFm(3!"!!B!N!3-)!!!!qG!(`!#!*!'$#)!!!2 +R3L!!!3#3"J`J!!!$jd3K!3#3"``J!!!$jdBL!!!!$`#3"!`J!!!$jdJN!3#3"`` +J!!!$jdSP!3#3"``J!!!$jd`Q!3#3"``J!!!$jdiR!3#3"``J!!!$je!S!3#3"`` +J!!!$je)T!*!)$#!!!!2R9#S"!*!($#F!!!2R9LX"D!&S!*!%$#F!!!2R@#b@J!# +3"J`R!!!$jeSYPS!!N!B-*`!!!qGF,J#3#!`R!!!$jei[!*!)#8KPE(CPG'PMB8* +"3dY39&*1!*!)rj!-3N&$5e"88NlrN!J!N!a#380,8&456P@U9DT9UP@UIrprrhr +rIrprrhrr!!!!"94TG'aP!!!#E`!-!"m-%`!!!qF$!B!"!!!!"!!($"-!!!2R"!) +!$!#3"J`4!!!!!3B$!!%!N!B-%`!!!qF'!`#3#!`6!!!$j`J%!*!)$"-!!!2R#J8 +3!*!($"-!!!2R$!m!N!J-%`!!!qF2"`#3"`3-%`!!!qF3"J#3#!a$!!!$ja!'!!% +!N!B-%`!!!qF5#!#3#!`4!!!$ja3*!E!!N!B-%J!!!qF8#3#3#!`6!!!$jaB+!*! +)$"%!!!2R'3X!!3#3"Ja$!!!$jf!`!*!)$%-!!!2RBM%!N!J-3`!!!qGP-[rf!!! +!#`!F$%!!!!2RD66rr`!!!#F!!!a$!!!$jfSe!*!)$%-!!!2RE$B!!J#3"Ja$!!! +$jfir!*!)$%-!!!2RF6IrpJ!!!#F!(!a$!!!$jh)i!!%!N!B-3`!!!qGd13!#!*! +'$%-!!!2RGcVrpJ!!!%-!(!a$!!!$jhJl!!8!N!B-3`!!!qGl22rf!!!!A`!F$%- +!N!4m23@J#(!!N!3-3`!"!qGm233i"`J!N!3-3`!!!qGq2J$F!0`!N!B#d!C(C@j +PGQż,8&456J#3#2q3$%*"3dY39&*1rj!)!*!-3N&$5e"88NlrN!J!N!a#380 +,8&456P@U9DT9UP@UIrprrhrrIrprrhrr!!!!%N%JFfPYF'aP)'e[FQ8JCQPXC3! +!!"PLBA0TBb!S)'*[E'3J1L"RC@jPGQ%J-6)T!!!!0!!-!!--%3#3"!B$!!)!N!B +-%3#3"!B$!!%!N!B-%3#3"!B$!*!,"QPdB@aTB`!!!"3!$!!"$"%!N!3'!`#3#`C +ZEh*YB@`!!!!%!!!5c`!!!"J!!"S'!!!!(3!!'Zi!!!!4!!!G"hrri[J!!!!r)"Y +2Eh9dE'PZC5!E8aY[FfKKC'ph)"Yc'dacG@*cBh*TF(3E3A0eF'9bFf0bDA"d'e8 +EBA9ZC'9bE'PZC4YeFh9`CA)E6(0eBR-EB4YL'h8!!!!8!!`!!3`4!*!%#!6m!20 +p"5m!N!8EH@9XE'ph)"Xi!!i#3DY8k[m!$KXiBQaeC4X[!!!!&!!-!!%-%3#3"!S +&'!#3#JJa,M8JE'PZC3!!!"3!$!!"$"%!N!3+"5!!N!S'-L"XD@jP!!!!&!!-!!% +-%3#3""!'!!%!N!N'Bf9ZG'9b!!!!&!!-!!%-%3#3""!'!!)!N!N&FQPRD(3!!!! +8!!`!!3`4!*!%%!B!!`#3#34QG@aX!!!!#Q0XEfjP)(4PFh3!!!!8!!`!!3`4!*! +%$!m%X!#3#4"QDA*cG#"YBA*RD@iJ-5ic!!!!&!!-!!%-%3#3""3*"N!!N!NBE'9 +QG#!V)'CTFR0d)'eKFQGTER-J-5ic!!!!#@%JBfpYE@9ZG!!!!"3!$!!"$"%!N!3 +@#J+S!*!*$R*TCfKd)'eKFQGTEL!f!!!!$'aPGQ9X)$)JC'&dB3!!!!4cB@eP!!! +!$'aPGQ9X)$-JC'&dB3!!!!aXCACPE#!b)'4KG'%!!!!-E'9fC@`J-5"NBA4K!!! +!#fGKG'KPFL"dCA0d!!!!%QGKG'KPFQ9N)'KPB@4XD@jPF`!!!"*LBA0TBb!S)'G +PEQ9fB5!a-LRJ5`!!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/MouseWrite_1.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/MouseWrite_1.hqx new file mode 100644 index 000000000..dd4c9e7e5 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/MouseWrite_1.hqx @@ -0,0 +1,58 @@ +(This file must be converted with BinHex 4.0) +:"@e[GA0P!%GQ6A4(66!a!3!!!!Y)!*!%a0m%4dd`0!#3")!!!!LS!!!"-!!!!(J +!!!"D!*!(#3"p!-!!M`!+!!!!`!#P!!S"I3$!!+S!#J&p!!!!Y`!-!Ad!!!$!!!i +"I3!!!-d!$J&p+YF!dJ!1!Ad!$J$D!!i#I3!1!1!!$J&p!!!!iJ!*!(d!`!L"!!i +"I3!!#*%!$K&p!!!)TJ!1!Ad!!!LR!!S!!!$!#+J!N!F%!H!5!3!-!!%!qJ#3&!% +!N!B%!H!5!3!1!!!!qJ#3'Bm!"!(J$`%!$!!!!+B!N"3"!*!%`!!%!H!2!3!-!!% +!TJ#3&!%!N!6L!!3"i")"!!d!!!#Q!*!8!3!!!!L"!"F"i!m(!!X!!!#Q!AF"UJ( +&!GB"eJ(@!*!("!%!!!!)N3!%!H!5!3!-!!!!qJ#3&!%!!!!)T`#3*!LS!!m!!!" +)!%J!N!3#m!*!rr(rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3! +!!!%!!J!!!!%R$`!"!*!1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!5!"N"!3"Lhk3 +!BXk!!!!!#!!!!!ErN!J!iJ!*!(d!`!$!!!i"I3!!#)%"`J(B!!3!+`$1!-i!h3! +%!$J"!IrrrrIrrrrhD'9KC'9b)$*QEfpdCA)!K[q3"!"P!,S!%3,r$!$rN!B!!2r +r!!!!ZJ!!!'8!N!HK!'3!#'43FQm!!!!"!+!!JJ!Drj!'!!%!#[q3"!"P!,S!#3# +3#6%!!3!S!'8!IJ!D!*!(#Iq3#!!i!#!!3J!"!#X!Z3#J!)-!rj!&!'8!ZJeTGh" +iGb`0C@jRE'PcD#"MC@jdCA)0BQpXC!eMD'PMB@G[)'*[E'30-6)JF'pTER30-63 +JF'pTER3JE'9QG%&bD@&XBQp[DfeKFQYTG'&XD@-0$3H@!#d!4`$D!434!D!!JJ% +!#J#3"!,3!N#B!"`!,3"!!0S"'!!Y!%F!fJ%8!#d!4`$D!43!!!,P!!,P!!,P!!, +P!!,P!!,P!!,P!!,P!!,P!!,P!!,P!!,P!!,P!!Eh!!"im!!'p`!!L2!!"rJ!!3- +)m!!(q!!""!6`!!Ii!!%B"2!!%[i!!JIrJ2i!!@!%q3!"$r$k!"2q!!)%!(cq!!' +!"2S!!Jr`)2S!&2i!"`3!!r`!!3!%q`!$!I!!32S!&2i!"`3!!!2r!J!#q`!$2J! +!J2S!%[i!!!6q!!!$qIm%mm!!!)$k!"(q!!!%rJ!!$rRr!r`!!!(j!"(q!!!%rJ! +!(rRr!ri!!!,j!"$q!!!%rJ!!2rMr!J!!"2N!%2i!!!6q!!"rq2m#J!!Bq3!3rJ! +!"2i!!(rir`+!!#$j!!lq!!!%rJ$hr`,!!%$j!!lq!!!%rJ$hr`,!!B$j!!hq!!! +%rJ$hr`(!![J!$Ii!!!Mq!2Ir!F!%q!!0rJ!!#2i!prm"`!Mi!!hq!!!)rJ$hr`( +!%2J!$Ii!!!Mq!2Ir!IJJq!!1rJ!$#!!!!IIr!FI!q!!1rJ!$#!!!![Ir!F#qq!! +2rJ!$#!!!"2Ir!X%"m2N!%2i!!`J!!!Mhr`2"!!q!qJ!3rJ!$#!!!%2Ir!m)!!(M +k!"$q!!-)!!!Jprm$a!!!"rS!%Ii!!`J!!%$hr`$)rJ!!m2X!%[i!!`J!!)$hr`$ +3rJ!"$i$m!"(q!!-)!!%!prm!i2d!!(Mm!"(q!!-)!!)!prm!`2d!!'$m!"(q!!) +)!!Ifr`$!rJ!"!i$m!"(q!!-)!!J!prm!`2i!!"cl!"(q!!-)!"J!prm!`2i!!'$ +l!"$q!!-)!"!!p[m$q!!$J2X!%2i!!`J!%!$hr`2!"r!-qJ!3rJ!$"!!J!2Ir!m! +!$$$k!"$q!!-%!#!!prm$`!!$32S!%2i!!`3!B!$hr`2!!!$JqJ!3rJ!$"!"J!2I +r!m!!!aMk!"$q!!-%!'!!prm$`!!%"[S!%2i!!`)!3!$hr`2!!"J"qJ!3rJ!$!J" +!!2Ir!m!!)!(k!"(q!!-#!%!!prm%`!"!!)$l!!lq!!-#!%!!p2m"J)$l!"(q!!- +"!%!!prm%`!)!F%$l!"(q!!-"!%!!prm%`!3!$N$l!"$p!!+!3!$hr`6!'!!"i2X +!%2d!!S"!!2Ir"-!J!!!mq`!4r3!#3%!!prm&`-!!!"1!r!!4r3!#)%!!prm!`Ii +!!4"!r!!4r3!#)'!!prm!`[i!!4!Jr!!4r3!#%'!!prm!c2i!!4!Br!!4r3!#%'! +!prm!d2i!!4!%r!!4r3!##&!!prm!i2i!!4!$r!!4r3!#"%J!prm!`2i!!4!"r!! +3r3!"!Nrfr`$!rJ!"%!(m!"(p!!)"3!$hr`$!rJ!"%!(m!"$m!!(!!2Ir!-$q!!% +3!I`!%2`!!8!!prm!`2i!!4!"r!!3r!!"B!$hr`$!rJ!"%!,m!"$m!!&3!2Ir!-$ +q!!%3(2`!%2`!!8J!prm!`2i!!4$Jr!!2r!!"4J$hr`$!rJ!!)rX!$r`!!8%!prm +!`2i!!#cl!!rm!!&!J2Ir!-$q!!"`q`!2r!!"3'$hr`6!!!!"S2X!$r`!!8!Fprm +%`!!!!L$l!!rm!!&!!rIr"-!!!!`Jq`!2r!!"3!$hr`6!!!!3)2X!$2`!!8!!p2m +"i%$l!!rm!!%J!2Ir"-!!!*a!q`!2r!!"%!$hr`6!!!-$`2X!$I`!!3J!prm#`!! +%q3!0r!!""!$hr`,!!!Mj!!hm!!%#!2Ir!X!!%2N!$I`!!3)!prm#`!!Jq3!0r!! +"!3$hr`,!!%$j!!cl!!#!prm#`!'!q3!-q`!"3(rir`'!![J!$2X!!8"rq2m"J!6 +i!!cl!!%J2rMr!3!)q!!0q`!"%"rjr`,q!"$i!!hl!!%)$rRr![`!B2J!$IX!!33 +$qIm#m!#!q!!2q`!!"2`!!3*!rJ!!!IF!$rX!!!,m!!%#J2i!!!,h!!ll!!!"r!! +!!rd!!!6h!!lk!!#!r3!!![d!!!Mh!!lk!!"!r3!!"[d!!"$h!!lk!!!Jr3!!#[d +!!#$h!!lk!!!3r3!!-[d!!#$h!!lk!!!-r3!!`[d!!%$h!!rk!!8$J!!!"`,p!!# +!p`!1q3!%B!!!'!,q!!!"pJ!1q3!%(!!!B!,q!!!#pJ!1q3!%!q!$J!,q!!!%pJ! +0q!!$(``!![i!!!Mf!!ch!!,`!!,q!!!3pJ!+p3!!![i!!#$f!!Ve!!!#rJ!!32B +!#[8!!!,q!!#!pJ!*p3!$!J!!!I8!#I8!!`)!!!,e!!Re!!-#!!!%p3!*p3!$!3! +!#28!#I8!!`%!!"$e!!Re!!-"!!"Jp3!)p!!#J!H!p3!(p!!"i(Md!!Id!!%IJ23 +!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8 +!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8 +!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8!!Z8 +!S!#$r`!Y!%F!fJ%8$3dG$GF0F'&RC5"LFQ9KD`eZCAFJFR9XC3eK$@)0e`e`B@G +P)$-0$F+Q!!!!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/NisusWriter_4.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/NisusWriter_4.0.hqx new file mode 100644 index 000000000..f1420d79e --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/NisusWriter_4.0.hqx @@ -0,0 +1,206 @@ +(This file must be converted with BinHex 4.0) +:"A4PFh3d!&4&@&41590*!3!!!!+r!!!le9ieB5"cE@&XE#"dCA0d$3eZEh*YB@` +JBQpXC#"TG'&XD@-JG@jNCA*XD@jP)(0eF'9bFf0bDA"d)(0eBR0MFQP`G#"[GA4 +XD@jP)(0SB@4[Gb"MEfjNC@jcC@3J$@9iG'9ZC'9N)'a[Gf9bG@jNCA*XD@jP)'4 +[G(4PC(9ZC'9bE'PZC5"hEh*NG@jNCA*XD@jP)(0eF'9bFf0bDA"d-L"cG@*cBh* +TF(3b$A0dFQPVCA4SFQpeCfJJ6hCPFQ*KFL"TERCPFR3J38a-3d&38b"cE@&XE'0 +KF(-JBQpi)!eLE'&MDb"bC@3JCh*PC@iJBQaeC5"MH@&Z)'eKCf9ZG'%JH@9XE'p +h)(GSDA4P)!eTERCTFfPLE'8J)(*PGQ9bFf8JEQpcF'9XE'PZCb!0$A4KBR-JG'9 +cG$SJE'9QG#!a,M)e)'0PER4PFL!a,M8JFQPRD(3J-5ih05"NC@0TE@&X)$)JDR9 +cG'PQH5!b,M)e$3Q3"$)Z-JPKN!F0-Lie)'aPB@4PFLiZ,L!b,MFe)'aPB@4PFLd +Y,5!c)'aPB@4PFL"IAemJ-bie)'aPB@4PFL"KB@%0#C!*$@aPCR3J-5ib05`JCQP +bFh3J-5"dB@)J-5ib$@CTFR0d)$%Z-cFJE'9QG#!a,M)e$@PNC@dJE'9QG#!f$@j +[FQeKE!eMC@jdCA)0FQPRD(30CR9XE!ecF'&MD@jR)'j[FQeKE#"LC@C[FQ8J-6! +0Fh"KBfPZCb"LC@C[FQ8J-5ia+#"KEQ3JB5"RFQ&`D#N0G'PYC5"QD@9XC#!k)"3 +0$@*PCLJJB5"YBA*VCA)J)b-J6NmJ9%9B9#"*6L"039*,49)k)0*K)'jPGb"YBA* +Vdb!M)fpbC5!`$@Jp-6-Z-3eS26%c,M%J+'CTH'9N+3eS25!b)#KXD@jP+3d"$3f +Jc!!!!3!!!$QI!!!iR`!!!MB!!!!9!'!CKJ!J+98!)%("!#!(!*!%&J!-'DB!"%' +p"A4PFh3d!J!#!&4&@&41590*!3$rN!3!N!3%D`!!!J"849K86NP653%!rj!%!*! +5c'2%"J!!!Vm!!$[9!*!)"rm!!!6b!!G8-`!"!*"a33-!J!!!!!-c,M!f6QPcGA1 +S)$-Z-#"'D@aP)%C[FQeKG!fT8'&bB@G[EL"$EfjMCA"dFb`J5@jM,L!a16Ji,6N +f!!!!-J38J!!!!!8d,M%Z0#8d,M%Z0!fT8'&bB@G[EL"$EfjMCA"dFb`J5@jM,L! +a16Ji,6Nf!!!!S*p8D'Pc)'4[Bh9YC@jd)'0[G@aN)'j[G#"LC5"[F'9ZC@3JBQ9 +MBA9cC5"dD'8JBA"`E'PMBA4TEfiJdNjTFh9cdb"MEh9XC#"ZEh3JBQ8JCQpeEQ3 +Z)#"8Eb"[FQ4PFL"K)'0[F(NJEfBJ6QPcGA-X)'0[ER4KBh3J6QPcGA-J8fpQG(G +KFQ8X)%PZBbiJBA3J+$Ba15Nd1$%Y-63h0bi!!!!L!#!!N!F#!!-!N!F-!*!4AJ" +H!!d![!#D!B-!%3,r$!$rN!3![!!!!!d!!!'$!!!!QJ#3"k!!JJ#K!'3!#%j*8dN +!"3!+!!%!#J!0!,`!QJ'$!!X!(J!H!%)!$3#m!*S"J`")!+!!J`$r!!!!9J"@!!) +!3!#2!2J!%3,r$!$rN!3!3!!!!!)!!!$i!!!!M`#3"k!!JJ#K!'3!#%j*8dN!"3! ++!!%!#J!#!%!!M`$i!#!!!J"!!)i!p`#J!)-!r`!!#Q`+E!#3"E3"@`!4![m-!2q +3"!#3#!&E!!!!Y!#3"k%"mJ!@9(PME`#3"l3"@dGbLA"SVf*U!+%!C!FN!*!%9(P +MD'q[BQS!N!3($J!!#0`khe"0-$%!!!!)!%J!5!")!%K38M!a!!!!H!!2!!!!5!" +)!*!%![!#32rarqi$#3*5B`)&+!2m!3!!!!&S!@J!N!31X!Y!!!%"!!"N!!%!!!! +"!!)!!!!"*`m!!3#3$K!!N!N3!2qerkB2,3ZD!!J"!*!0'3&88M!a!!!!@J!!!!3 +!"!!!`"%2r`!c!$J!5!&E!,3!!3!"!!%!!3"(T0J!4k2i!%HMp!!@!"-!3J!!!"B +!!!"(Sr`!4k1!!*!&4k2)!*!&4k28!*!&4k2X!%HM[&96-$%!N!4%8c!b!!!#fJ! +!!3%!"!!!!3%!"!!$!!!!$!!"!3#3#!%!!!!$!!-!!`!$!3C(C@jPGQ%!N$m$!!! +!$!!#!3#3"!%!!!!"!!!!!`!$!!-!!`%'4f9ZCACK!*!r!`!!!!`!!J%!N!3"!!! +!!3!!!!-!!`!$!!-""NGPEQ9fB3#32`-!!!!-!!)"!*!%!3!!!!%!!!!$!!-!!`! +$!3C(C@jPGQ%!N$d%!!-!!!!+!!%"!*!%!3!"!!%!!!!$!!-!!`!$!3C(C@jPGQ% +!N$d%!!-!!!!-!!)"!*!%!J!!!!%!!!!$!!-!!`!$!!C(C@jPGQ%!N$m$!!!!$!! +#!3#3"!)!!!!"!!!!!`!$!!-!!`!'4f9ZCACK!*!r!3!"!!%!!3!"!!%!!3!"!!% +!"!!%!!3!"!!%rj!%8P)`-J!!!"J!N!8@!*!&&J#3"4B!N!8@3e)`-J!!!"J!N!9 +#!*!&3J#3"8)!N!9#8NJ`-3!!!#S!"!!!!!%!!3"(Sm!!!!!#!!)!N!F$!!-!N!F +%!!3!N!FU!!%"!J!3!*!(!`!$!!-!!`#3#dHMa!!&!!%!!!!#3M%SD#N!N!4$5$! +a!!!!+J!%!!!!!3!"!%HMc!!!!!)!!J#3"`-!!`#3"`3!"!#3"bS!!3%#!"!!N!F +$!!-!!`!$!*!,4k23!!8!!3!!!!&"-LKS+3#3"&4--$%!!!!U!!%"!J!3!*!(!`! +$!!-!!`#3#dHMh!!)!!%!!!!$E@%JG'&LE'934$%`!!!!!J!"8%3a-3!!!!)!$&" +%-6)!!!!"!&"%-6-!!!!#!!*&4$!a!!!!!3!%!!3!!!!U!!%"!3!3!*!(!`!$!!- +!!`#3#dHMj!!#!!%!N!4&08j%-$)!!!!B!!!!!3#3%8HMm!!!!#S!!3%"!!d!N!F +$!!-!!`!$!*!,4k0m!!8!!3!!!!4ZEh4PFe46-$%!!!"b!!F!!3!!!"!!$!!$!!! +!$!!"!!%!!!!3!!`!!`!!!!`!!3!"!!!!%!!-!!-!!!!-!!%!!3!!!"!!$!!$!!! +!$!!"!!%!!!!0!!S!!`!!!!S!!3!"!!!!%!!-!!-!!!!-!!%!!3!!!"!!$!!$!!! +!$!!"4Ni`-J!!!!%!!`C(C@jPGQ&%3M!b!!!!#3!"-!!0!!`!!84'-$%!!!!1$9T +KF'BJ4'PZCf*KG(0%6$!a!!!!4J!"!!d!$3eDBA"Q)%4TEQGLBA4c!*!b8%%`-3! +!!!)"!&""-$)!!!!%!!%!!9"#-$!!N!433M%`!*!%9%924J#3"3%!#J#3"E3"@`! ++!*!*0!#3"E3"@`#K!,B!"!!"!!%!)!#c!!%!X`&D!#!!!3&D!,-"@J#K!,B!"!! +"!!%!)!#3"E)!!!!J!!!"@3#b!9N!)!#3"J&C!#!!XJ!!!,)"@3!L!!8!"3!A!#) +!"3&8!"F!)!!&!!8!"3&8!#!!(!!&!"`"9!!L!*N!"3!8!#)!Q3&8!"3!)!#C!!8 +!Q3&8!#!!V3!&!+d"9!!"!!S!1!!!!,3"@`!L!$J!"3!A!#)!1!")!"F!)J!i!!9 +$!!!L!%m!"8-!!#)!6`!&!"F!)J"2!%J!&`!L!%m!"8-!!#)!CJ!&3`!!)J"Q!!8 +!&`!L!'B!5!!A!#)!CJ!&3`!!)J"p!!9$!!!L!(d!"3!A!#)!I3")!"F!)J"p!!9 +$!!!L!*3!"8-!!!%!#J!!!%J!Y!&E!#)!)3")!"F!)J!K!)X!&`!L!#%!5%-!!#) +!1!")3`!!)J!K!)X!&`!L!#%!cJ!A!#)!)3#,3`!!)J!i!)Y$!!!L!#%!cJ!A!#) +!)3%4!"F!)J!K!-j$!!!L!$J!cN-!!#)!)3%4!"F!)J!K!93!&`!L!#%"%8-!!#) +!1!%43`!!!3!+!*!&Y!&E!#)!)3!&!"F!)J!K!!9$!!!L!$J!"8-!!#)!)3!&3aF +!!3!+!$J!5!#d!9X!)`"F!#)!1!&8!&`!)J!i!)X!A!!L!$J!cJ"F!#)!1!%4!&` +!)!!i!%J!1!&8!#!!P!")!*3"9!!J!%m!5!"2!93!)!"Q!%J!CJ&8!#!!I3")!(d +"9!!"!!S!2!!*!%`!43!X!!N!!`C(C@jPGQ%!!!-!!`!0!!`!,J!%!*!&+aG)"8) +a+'JT!!%!#J!*!!N!'3&4!#J!&3#5#'eK)(4KBQaP!!!"!!S!*3"-!$8!L!!S!$% +!@39"-LKS+3!"!!S!R3!*!+S"83!0!!S!+!#R!!S&EQpdCA-!!3!+!)%"&3#4!9% +!$3!-!#J!M3%@!N8e!!$r!!!&iJ#3"d)!$!#3%J(8!*!R#!!!!'S!$!#3%J(8!*! +K"3!5!!!"!*!%*!!!!J#3"$B!!!-!N!4)!!!%!*!%@3!!"J#3#!S!!!#+!!`!N") +"e!#3)3N!%J!!!3#3"#3!!!)!N!3f!!!$!*!%5!!!"!#3"&N!!!B!N!4X!!!",J! +!!(i!!!%Y!!!!N3!!!9m!!!#d!!!"B3#3"``!!!"+!!`!N!X$!!!!%!!!!G3!N#% +"!!S!!!%!N!J0!!!!3J!-!*!,'`!!!"!!!!(8!*!R$J!!!%)!$!#3#aX!!!!3!!! +"X!#3*`m!!!"#!!`!N")"e!#3*a!!!!"#!!`!N!F"!*!+!G3!N#F4!!!!3J!-!*! +(!J#3#J(8!*!R%J!!!%)!$!#3"`-!N!S"e!#3*a-!!!"#!!`!!!!+!*!1!G3!N#F +8!!!!3J!-!!!!!4QD!*!-!G3!N#F@!!!!3J!-!*!5!G3!N#FA!!!!3J!-!*!5!G3 +!N#FB!!!!3J!0'CS!N"!"e!#3*aN!!!"#!!dCQJ#3%!(8!!!"!*!N'J!!!%)!!J# +3%J(8!!!#!*!N'`!!!%)!'!#3%J(8!*!R(!!!!%)!!3#3%J(8!!!#!*!N(3!!!%) +!$!#3%J(8!*!NIrrrr`#33!+!!*!0!J!"!!!!!3!!!!)!!3!%!*!&!J!#!!!!!J! +!!!)!!J!'!*!&!J!$!!!!!`!!!!)!"!!!!!3!!!!#!!3!#`#3"3)!"3!!!!8!!!! +#!!8!#3#3"3)!"J!!!!B!!!!#!!F!!!!(!!!!!J!)!!!!#!!!!!)!#!!*!*!&!`# +3"3N!!!!$!!!!#!#3"3-!!3!!!!S!!!!$!!%!$J#3"3-!!J!!!!X!!!!$!!)!$`# +3"3-!!`!!!!`!!!!$!!-!$3#3"3-!"!!!!!d!!!!$!!3!$!#3"3-!"3!!!!i!!!! +$!!8!#J#3"33!N!82!!!!"!!!!!d!N!8%!!%!!!!3!!!!"!!"!!F!N!8%!!)!!!! +4!!!!"!!#!!B!N!8%!!-!!!!5!!!!"!!$!!F!N!8%!!3!!!!6!!!!"!!%!!N!N!8 +%!!8!!!!8!!!!"!!&!!-!N!8&!!%!!!!9!!!!"3!"!!-!N!8&!!)!!!!@!!!!"3! +#!!8!N!8&!!-!!!!A!!!!"3!$!!3!N!8&!!3!!!!B!!!!"3!%!!3!N!8&!!8!!!! +C!!!!"3!&!!F!N!8&!!B!!!!D!!!!"3!'!!B!N!8&!!F!!!!E!!!!"3!(!!8!N!8 +'!*!&(!!!!!B!!!!*!*!&"J!#!!!!(3!!!!B!!J!(!*!&"J!$!!!!(J!!!!B!!`! ++!*!&&3!$!!!!(`!!!"8!!`!"!*!&&`!$!!!!)!!!!"F!#`!#!*!&'`#3"5%!!!! +E!!!!!3#3"4`!!!!8!!d![!#D!B-,Z3!!!"B!!J"!!)m!q!Zk!!!!c!!"!"!!!!$ +-Irrqh`!!!"!!!J!3!!!!*Rrrrrm!!!!"!!-!$!!!!!Krrrrr!!!#VJ!!!Um!!!! +#!"!!!!!k!!!!!3!!!!%!!`!-!!!!"!!!!!%!!!!"!!!!!`!-!!!!#`!!!'3+B5" +ZCAFJE@&bD`!!!J!3!!!!*Rrrrrm!!!!"!!-!$!!!!!Krrrrr!!!#Y3!!!VX!!!! +#!"!!!!!f!!!!!3!!!!%!!`!-!!!!"!!!!!%!!!!#!!!!!`!-!!!!"J!!!'3&E@& +bDc)!N!91!!%!%!!!!%jrrrlI!!!!%!!#!"!!!!!q!!!!"J!!!!%!!`!-!!!!!3! +!!!)!!`!$!!`!!!!%!!!!!rrrJ"3!!`!$!!`!!!!"!!!!"!!,!!!0"!!!!!-!$!# +332q3"!#3'`-!$!!"!*!qrj!%!*!E!`!-!!)!N$lrN!3!N"X$!!`!"!#32[q3"!# +3'`-!$!!!!!J!N$crN!3!N"X$!!`!!!!3!*!mrj!%!*!E!`!-!!J!N$lrN!3!N"X +$!!`!%!#32[q3"!#3'`-!$!!J!*!qrj!%!*!E!`!-!%!!N$lrN!3!N"X$!!`!!!! +"!*!mrj!%!*!E!`!-!!3!!J#322q3"!#3'`-!$!!%!!3!N$crN!3!N"X$!!`!!"! +)!*!mrj!%!*!E!`!-!!!J%!#322q3"!#3'`-!$!!!!#!!N$crN!3!N"X$!!`!!!" +!!*!mrj!%!*!E!`!-!!"!!*!prj!%!*!E!`!-!!!"!*!prj!%!*!E!`!-!!!!J!# +322q3"!#3'`-!$!!!!J#32Iq3"!#3'`-!$!#3#3%!N$ErN!3!N"X$!!`!N!N#!*! +frj!%!*!E!`!-!*!*!`#30[q3"!#3'`-!$!#3#33!N$ErN!3!N"X$!!`!N!N&!*! +frj!%!*!E!`!-!*!*"J#30[q3"!#3'`-!$!#3#3F!N$ErN!3!N"X$!!`!!!3!N$h +rN!3!N"X$!!`!N!B)!*!jrj!%!*!E!`!-!*!'!3#31Iq3"!#3'`-!$!#3"b!!N!d +"!*!Y&J#3'`-!$!#3&3%!!3#3+2q3"!!!J!N!N"3$krm"!9X!N%$rN!3!N!9B5IV +r6!#3"!&Erd`!N!3"@`!!!-S$k`!#!3!!!3!#!*#E%!#3*c`!!3!3!!!!2(rrrYm +!!!!3!!)!%!!!!#arrrrr!!!!!J!$!!`!!!!1!!!!!94jBfm!N!Hd!9X"@`!!!!) +!N!3#C(m0"9C8-6!`#!3%@Q9KE!!!$3eDBA"Q)%4TEQGLBA4c!")0@Q&`CL"$D'& +ZBf9bH40@"e48@8C[ER3!&!98D@ePF`3"#&4PE'9dCAKd!!!A"P0jE@*[E!`(rJ9 +6GfPZCbU+$P0MFQP`G#"09#"#EfaNS!!3#&"KE'&dD@j[8`Ii"NpiCQpbC!!(pJ4 +2ERPi!LU4%dpXC#"&EQGXDA0S)&4PH(3J693(p""2E'3J4@jRE'PcD#"8CAKd8`! +##%jPGb"CEh*V!!!L%NjPGb"$C@jdGA*j)&0MD'aLD`)UR3p1CAFJ3Q9bEfaTEQ% +J693(l3K1B@4TB@jZC4!!$a*1)%KPE(CPG'PMB5"1BA*bEhF!#G-)693J4AKdFQ% +B!!3'6@pZB@0[+3IS"deKBfKTEQ8(!!e-G@0TC'%J3R*TCfKd"q%06(9LB@aTEL" +(FQ&`D#TB#%YXB@jR)%e8!$RE&%KPE(CPG'PMB5"$Efe`FQ9cFf9N!MTq$dKPE(C +PG'PMB5"#E'&MD`!9#8KPE(CPG'PMB6UM'%GTE'`J8f&ZFb"$EfjNC@jcC@3J3Qp +XC&-!!`C(C@jPGQ%!"p!24f&bB@e[EQ3J6Q&bFQph#lF-C9G[FQaN)&4TCfKd!#C +b$N9cF(NJ8f&ZFb"#EfaNN!!QF!P&Fh"j)&0KER-(e`K%C@a`D'PKEJ!!&JG$Eh9 +bD@9b!!!(3fKTBf&RE`!1"d*[EfYYB@iUc44#Ef4[EQNJ693J9@adFQ%J3QpXC&B +!)3Y"GQ&ZG#"(BA*NC5VA'%&bD@&X)%e8)%0[EQ4PER0PC#"-D@GSG%J!!!V'!!% +!%!!!#XCrrrlI!!!!%!!#!"!!!!#m!!!!!3!!!!%!!`!-!!!!#3!!!!))3fKKF(4 +PFL"c!!-!$!!!!!3!!!!$!!!!(@eK!!-!$!!!!!%!!!!%!'i!!`!-!!!!!J!!!!8 +!!$Ji!!-!$!!!!!)!!!!'!!%d,J!$!!`!!!!#!!!!"`!"B@F!!`!-!!!!"!!!!!J +!N!3Z)!!$!!`!!!!%!!!!#3!!!!%JC!!$!!`!!!!#!!!!#J%"EQm!!`!-!!!!"!! +!!!X!!!!"GA-!!J!3!!!!Y!!!!!%!!!!"!!-!$!!!!!%!!!!#!'`!!`!-!!!!"!! +!!!-!!!!G)&3!!`!-!!!!!3!!!!3!H3!$!!`!!!!#!!!!"3!!G'%!!`!-!!!!!J! +!!!B!!@&b!!-!$!!!!!)!!!!(!!%j+3!$!!`!!!!%!!!!#!#3"`-!$!!!!!3!!!! +*!!!!!J!!!!-!$!!!!!)!!!!+!3*H!!!$!!`!!!!%!!!!#`!!!!(rr`!#!"!!!!# +d!!!!!3!!!!%!!`!-!!!!!3!!!!)!!!!$!!`!!!!%!!!!!`!!!"fm!!!$!!`!!!! +"!!!!"!!!!!-!$!!!!!)!!!!&!*!&!`!-!!!!!J!!!!B!!Im-!!-!$!!!!!)!!!! +(!!(i!!!$!!`!!!!%!!!!#!#3"'3!!!-!$!!!!!3!!!!*!!!!!d!!!!-!$!!!!!) +!!!!+!31J!!!$!!`!!!!%!!!!#`!!!!&E!!!#!"!!!!#d!!!!!3!!!!%!!`!-!!! +!!3!!!!)!!!!$!!`!!!!%!!!!!`!!!"fd!3!$!!`!!!!"!!!!"!!(!!-!$!!!!!) +!!!!&!*!&!`!-!!!!!J!!!!B!!3!!!!-!$!!!!!)!!!!(!!%!!!!$!!`!!!!%!!! +!#!#3"%$r!!-!$!!!!!3!!!!*!!!!"!!"!!-!$!!!!!)!!!!+!33!!!!$!!`!!!! +%!!!!#`!!!!%"!!!#!"!!!!#k!!!!!3!!!!%!!`!-!!!!"`!!!!)'9'&LE'8J!3! +$!!`!!!!%!!!!!`!!!"e5-!!$!!`!!!!"!!!!"!$!!!-!$!!!!!)!!!!&!!!"!!! +$!!`!!!!#!!!!"J!"4k-!!`!-!!!!!J!!!!F!!8HM!!-!$!!!!!3!!!!)!*!(!`! +-!!!!"!!!!!N!!!!&8c!!!`!-!!!!!J!!!!S""3!"!!-!$!!!!!3!!!!,!!!!!3% +"!!)!%!!!!,i!!!!"!!!!!3!$!!`!!!!+!!!!!JP&FA9KG'P[EL!!!!!$!!`!!!! +%!!!!!`!!!"d!!!!$!!`!!!!"!!!!"!!!!!-!$!!!!!)!!!!&!*!&!`!-!!!!!J! +!!!B!!3%!!!-!$!!!!!)!!!!(!!%'4`!$!!`!!!!%!!!!#!#3"`-!$!!!!!3!!!! +*!!!!"J!!!!-!$!!!!!)!!!!+!3B!!!!$!!`!!!!%!!!!#`!!!!%$!!!#!"!!!!# +m!!!!!3!!!!%!!`!-!!!!#!!!!!)(4QPRGA*P)!!!!!-!$!!!!!3!!!!$!!!!(3! +!!!-!$!!!!!%!!!!%!!!!!`!-!!!!!J!!!!8!N!8$!!`!!!!#!!!!"J!"$!!!!`! +-!!!!!J!!!!F!!3-!!!-!$!!!!!3!!!!)!*!(!`!-!!!!"!!!!!N!!!!(!!!!!`! +-!!!!!J!!!!S""`!!!!-!$!!!!!3!!!!,!!!!!3!!!!)!%!!!!,i!!!!"!!!!!3! +$!!`!!!!'!!!!!J9dCAKdC3C(!!-!$!!!!!3!!!!$!!!!(3!!!!-!$!!!!!%!!!! +%!!!!!`!-!!!!!J!!!!8!!`!!!!-!$!!!!!)!!!!'!!-!!!!$!!`!!!!#!!!!"`! +%!!!!!`!-!!!!"!!!!!J!N!3'4`!$!!`!!!!%!!!!#3!!!!J!!!!$!!`!!!!(!!! +!#JB)BA"bCA-!!!-!$!!!!!3!!!!,!!!!!J!!!!)!%!!!!,3!!!!"!!!!!3!$!!` +!!!!"!!!!!J!!!!-!$!!!!!3!!!!$!!!!(@%!!!-!$!!!!!%!!!!%!!!!!`!-!!! +!!J!!!!8!N!8$!!`!!!!#!!!!"J!"!!!!!`!-!!!!!J!!!!F!!3!!!!-!$!!!!!3 +!!!!)!*!%!3!!!`!-!!!!"!!!!!N!!!!*-J!!!`!-!!!!!J!!!!S"#4B!!!-!$!! +!!!3!!!!,!!!!!3!!!!)!%!!!!,3!!!!"!!!!!3!$!!`!!!!"!!!!!J!!!!-!$!! +!!!3!!!!$!!!!(3!!!!-!$!!!!!%!!!!%!!!!!`!-!!!!!J!!!!8!N!8$!!`!!!! +#!!!!"J!"!`!!!`!-!!!!!J!!!!F!!3!!!!-!$!!!!!3!!!!)!*!(!`!-!!!!"!! +!!!N!!!!+!!%!!`!-!!!!!J!!!!S"#J!!!!-!$!!!!!3!!!!,!!!!!3!!!!)!%!! +!!,3!!!!"!!!!!3!$!!`!!!!"!!!!!J!!!!-!$!!!!!3!!!!$!!!!(8%b!!-!$!! +!!!%!!!!%!!!!!`!-!!!!!J!!!!8!!!-!!!-!$!!!!!)!!!!'!!%!!!!$!!`!!!! +#!!!!"`!"G'%!!`!-!!!!"!!!!!J!N!3a!!!$!!`!!!!%!!!!#3!!!!Xa-`!$!!` +!!!!#!!!!#J%,!!3!!`!-!!!!"!!!!!X!!!!"!!!!!J!3!!!!Y!!!!!%!!!!"!!- +!$!!!!!%!!!!#!!!!!`!-!!!!"!!!!!-!!!!G!!!!!`!-!!!!!3!!!!3!4`!$!!` +!!!!#!!!!"3#3"3-!$!!!!!)!!!!'!!%!!!!$!!`!!!!#!!!!"`!"!!3!!`!-!!! +!"!!!!!J!N!3"!!!$!!`!!!!%!!!!#3!!!!`!!!!$!!`!!!!#!!!!#J%-!!!!!`! +-!!!!"!!!!!X!!!!"%!!!!J!3!!!!Y!!!!!%!!!!"!!-!$!!!!!%!!!!#!!!!!`! +-!!!!"!!!!!-!!!!G%!!!!`!-!!!!!3!!!!3!!!!$!!`!!!!#!!!!"3!!-$)!!`! +-!!!!!J!!!!B!!8B`!!-!$!!!!!)!!!!(!!&RBJ!$!!`!!!!%!!!!#!#3"!d0!!- +!$!!!!!3!!!!*!!!!$3!!!!-!$!!!!!)!!!!+!3d!!!!$!!`!!!!%!!!!#`!!!!% +!!!!#!"!!!!#d!!!!!3!!!!%!!`!-!!!!!3!!!!)!!!!$!!`!!!!%!!!!!`!!!"d +!!!!$!!`!!!!"!!!!"!!!!!-!$!!!!!)!!!!&!*!&!`!-!!!!!J!!!!B!!EB!!!- +!$!!!!!)!!!!(!!&D!!!$!!`!!!!%!!!!#!#3"!%!!!-!$!!!!!3!!!!*!!!!$PN +!!!-!$!!!!!)!!!!+!3iJ!!!$!!`!!!!%!!!!#`!!!!%L!!!#!"!!!!#d!!!!!J! +!!!%!!`!-!!!!!3!!!!)!!!!$!!`!!!!%!!!!!`!!!"d&!!!$!!`!!!!"!!!!"!! +!!!-!$!!!!!)!!!!&!!!i!!!$!!`!!!!#!!!!"J!"1!!!!`!-!!!!!J!!!!F!!8m +!!!-!$!!!!!3!!!!)!*!%"8-!!`!-!!!!"!!!!!N!!!!2&`!!!`!-!!!!!J!!!!S +"$`!!!!-!$!!!!!3!!!!,!!!!!5)!N!6f!!%!%!!!!2CrrrlI!!!!%!!#!"!!!!$ +QIrrrrJ!!!!%!!`!-!!!!A!!!!5b!!*"+!3#3%`-!$!!!!#3!!!"N!!!!!3#3"bJ +!N"X$!!`!!!!3!!!!H!p%Ef0eE@9ZG#"6Eh9ZC(-!!!!$!!`!N!GZ!!!!!`!-!!! +!!3!!!-J!N!9i!!m!!!")!%J!N!3#m!*!rr(rlJ-*!P*M!J8S!r`"!!!!!@J"D!# +3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!"!*!1%!#3#4!!rlArTJmY#jS!#!% +!N!dC!3!!!!i!N"'L!)J*!3#3"J,`!N!!&3!f!Z8##J!9!$B#j3)+!*!**!!!!!- +!!3#3"3%!N!J"!*!B5!")rr(rlJ-*!P)!!!%!!!%")!&p!*!L![!#3!!!!!%!!3! +!!!&!!*!+G!#3$3)!N$N#!*![&J!'"@eKFQXb!!X+B5"ZCAFJE@&bD`#3"!3!N!F +%!*!'!MS!!3!!!Um!!!+[!*!1!3%!N"%"!!%!!3!"lYflGqlGZhIrN!J!J!J)!!S +!N#!"!!!!c'&cm`#3"3-!$!#3$3%!!!!"!!%!N!F"!!!!!3!*!!!!!3#3%J-!N!a +@PNJ!!!!k!!!!1J#3"6S!1J"@PP`!!!!"!*!,!3#3@2m!N#`"!!%!!3!"lYflGql +GZhIrN!J!r`J)!!!!-3#3"6%!N!8"!3#3"!8!*!"X!!!!#J!!!3#3$#J!!`&6!Id +!N'ia!*!&-3#3"3%"!*!)!L)!!3#3"4)!%J#3"*QCrrm!N!ErN!B!N!ErN!B!N&E +rN!B!N!ErN!B!N&#!!*$r!*"#!3!!!$QI!!!iR`!!!MB!9T@S'bi!!!!F!MB!'(C +PFR-!!3$+8e45)!!!!1*%8%j%!!!!lP"*3e3!!J$k8P9-43!!!4j'8Ne8!!!"+P" +*3d3!!!%f69*,0`!!!8*@39**!!!"6NC838)!!!&D8%a"3`!!!@C36%48!!!"FP" +(8N%!!!&q4Na69!!!!BT%8e"-!!!"PP0(8$%!!!'L8&*&3`!!!Dj$8&*$!!!"ZP" +(6&N!!!('8e4C6!!!!G*69%j0!!!"hP088N`!!!(U8e41@!!!!IC*6NC2!!!#!NP +14M)!!!)1!!(rr`#3#3,rr`!!!%8!N!5rmrrr!!!!H`#3"!2Vrrm!!!%I!*!%#lR +rr`!!!88!N!3,Z[rr!!!"T`#3"!2Vrrm!!!)"!*!%!q[rr`!!$(%!N!3$krrr!!! +59`#3"!2Vrrm!!"6E!*!%!q[rr`!!&2X!N!3$krrr!!!9b`#3"!2Vrrm!!"BG!*! +%!q[rr`!!)b8!N!3$krrr!!!Mm`#3"%iJrrm!!#3c!*!%!q[rr`!!*$N!N!3$krr +r!!!QS3#3"!2Vrrm!!$&V!*!&J2rr!!!bC3#3"B$rr`!!-Z%!N!@!rrm!!$,c!*! +%!q[rr`!!-jN!N!3$krrr!!!d%3#3"!2Vrrm!!$3V!*!%!q[rr`!!0$-!N!3$krr +r!!!d1`#3"!2Vrrm!!$Cj!*!%(5B!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_2.1.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_2.1.hqx new file mode 100644 index 000000000..d644a59a2 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_2.1.hqx @@ -0,0 +1,24 @@ +(This file must be converted with BinHex 4.0) +:#A4PFh3b,R*KC`"')bY%4L-V33%!!!!$3J!!!HBhq3!!!`X#3!!"!*!)D)pSMfL +2rr-!N!CSMfL2D)m!N!EcMqq!!'8!!`!)`G!!N%-#!*!&!3!"!!%!!!,`!N!!4[[ +-!*!&4[UX!%%!"!(F!R`!!3#3"3%!!!!#!3)!N!8"!!)!!!!V!!)!!!!V!JJ!J!( +L!%EkP!!!!!N!N!9'qE`!4[Mm!*!&!`!(!*!+!84N!3!!C!%!N!B"!*!&![!#3!# +3"`)!!3!"!!)!N!S"c!))S)!$kJ!S!#J#b!)B!*!'J!%!!!!"!!%!!'3"!!"N!3! +!!H)!!!#)!!F!#2q3#!!"rri!N!F"rrrm!20p"5m!!!!$mYF)9S6X!!!!"0eV#-) +'SJ#3"!*"Ue6Ur`!!!!8!!)!!%E!!!!!"!*!%e!#3"!)%9f9TT`a6BfKhBA*k,eG +PDDF%4f9XBJG0B@GPER4K!e*[G!4$H@&Z"%GbRfi%3QaKG3!8!*!*$QCB!!jQ@!! +&!!!"8!#B!##3"'%JF'%ICf8JER9Y(f*PFL"TEL"K)&*KCe4TE@8J-Lia)'CT(fa +P$3d0BQpXC#"TG'&XD@-JG@jNCA*XD@jP)(0eF'9bFf0bDA"dFh9LFf0bDA"d$80 +SD@0KCfmX)%0[GA*TCA)X)$%`F'pTER4c,#!b0#"`EfPZG(-X)!e`B4pRC3-J)'4 +K(h4P!5!JG'PYC5!#$3!5!!!-!!!$!!!!,J`"!!-!!!!b$!!!!`!!!$--!J!$!!! +!13`!!!-!!!!k$!3!!`!!!%--!!!$!!!!4!b!!!-!!!"2M!!!!`!!!&J-!!!$!!! +!@3`!N!CJ$!!!!`!!!')-!!!@!!!!D3`!!!-!!!"V#J!!!`!!!(--!!!$!!!!G4J +!!!-!!!"q$!!!!`!!!!%!N!3"k!!"!*!&'3#3"2!hrrm!!%Ap!*!%i!@!!*!%"J! +#!#d!2-8J!!!"!!!!!D!!!!#J!!!!4J!!!!)-G'9cG%GbBA"S3eFc!J)!!J"$9dG +53Np#6`%!#A4PFh3b,R*KC`)!!!"')bY%4L-V33#3$%BM+d4')bY"!*!Bcmiq+3# +3"J(Q!*!+%J#3"!)-G'9cG%GbBA"S3eFd!J)!!J"$9dG53Np#6`%!!B!#!*!&!ZF +!N!30J!!!%!#3"3'F!!!)!-j`l!A1F1`&!*!@"()!!J#3#!4f!!%!N!ei!!m!!!" +)!%J!N!3#m!*!rr(rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3! +!!!%!!J!!!!%R$`!"!*!1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!!!#!Z,$XN!!$ +3!!![!'!J38d!)&"0!$S!N!S"!!!"!!!!!D!!!!#J!!!!4J"'J*JAi!!!!"`!4J! +"8&*&3`!!!"**6P4-!!!!(K*Srrm!N!9'q'J!!2rr!!!!I!#3"0`E: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_3.2.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_3.2.hqx new file mode 100644 index 000000000..55ecf4faf --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_3.2.hqx @@ -0,0 +1,136 @@ +(This file must be converted with BinHex 4.0) +:#A4PFh3c,R*KC`"5)bY%8L-V33%!!!!D1`!!!8)V!J!!!c-#C!!"!*!)D)pSMfL +2rr-!N!CSMfL2D)m!N!EcMqq!!C!!!!-!+%"!!&Q1c!!!!&d!N!Ga!*!*@C!!d!% +!!J#3#P-!!J#3"3%!!3!"!aJ!!!*N!!!!33!%!G`#I!!"!*!&!3!!!!)"!J!!!!% +#!!!"!!!!J!(L!!%!!J!!!!)!!!#,!!)!!!#,!*!&!`!(!*!*!3#3&3%"!*!*!aJ +!!!*N!*!*!J!"!!!!!3!#!*!-''-#!3!!J)!,kJ!h!!!!1J!!!YF!!!)U!*!)J!% +!!J!!!!%!!3!!!J!!!3!#!*!%'(N!SJ!!!+*'Ee4K!*!%!IT'Ee4K!!%!!!0K4NK +QE!#3"!2C4NKhE!#3""*c4NKcE!#3""4a8f9XC3#3""4j3dK8B3#3""8A3dK8B3! +"!!!9D9"548-!B`!!&J9#C84M!*!%&Me#G'0S!*!%&NGQF("b!*!%&Q9RFQ&j!*! +%&SpMEfab!*!%&VPbCA-J!*!%&Z0'6'PZ!*!%!93!)!!'!!J!!!!%!!)!!!$q!!! +!!rrr!*!0!3"@!!!!!3"a!!!!!3#+!!!!!3#Y!!!!!3$4!!!!!3$`!!!!!3%-!!! +!!3%[3IVqpJ&8%")5%J%!N!X2!3K6G'&ZC'&bC"!5%K)!!!%!N!N(!3C&ER4TCA) +3&489!!)"!*!*"`N("`%!$&CTFQGeE'8JCQPiC4!E'aX!!J3!!!%!N!B'#JB'"`N +("`T'!3!(6@pZEQ&TC4!9&48!!3%!!J#3"`F*"`i"!!K3Eh9bBf9ZG"!@&KB!!!3 +!!!%!N!B'#JB'"`%&-5!b-c33'4NC!!)%!!!"!*!'"JS'"JF*"`F"!!Ja)$)c0#` +e-"!B'"J!!J%#!!!"!*!&"`N("``("`%-8f0TC@jdD@CTFA9P!!!"B`!J!!B!#J! +!!!3!!J!!!3%!!!!$rrm!N!d#!')!!!!"!(N!!!!"!*3!!!!"!,!!!!!#!0J!!!! +"!1i!!!!"!33!!!!"!4d!!!!"!63!!!!"!8P"q[lf!@-!!!!1$!!!!!`[%#m9!3J +c,c3[-6Ni13!!!!i-!!!!$#!6)"8"$$-J3ACbD@`J-6Ni13!!!"!-!!!!$b!-)"- +J&3%,4QpbE@&d)'a[EQF!!!!9"`!!!!`[%#m9)#!+1JNk"`%!%6-[0#ma16Jj)#! +j1M-`1M!d!!!!$JN!!!!+)'JJ#3%(15"S)$-`)!!!!!i(!!!!#MS*1JF""cNk-c! +k-$3!!!!1$3!!!!d[%5m9!3S`-bm`0#ma16Jj!!!!$J`!!!!-)")J&!%)-b""GR) +J1$N!!!!-%`!!!"-J&!%)3ACbD@`J1$N!!!!1$!!!!"![$#m9!3Y%BA4P)&8Z8bj +",J!!!(3!)!!3!!-!!J!#!!3!!!!8!!!!"[rr!*!,$3!!!'!!!`#3#3)!!!"Q!"B +!N!N#!!!!E3#3#[mq!!!!G'F',`j1Z[cU60p(C@jPGQ&$Eh9bD@9b3fKTBf&RE`! +!$TB!*J)3!!B#!!!#!*!*"Irq!*!*!3!!!"F##!!&!!#J!*!*S!#J!+!!J!#J!+! +!S!!!!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!%!!-!"3!*! +!!(!!N!!!N!!!-!"3!&!!J!"`!%!!F!!`!(!!J!#!!)!!J!#!!)!!J!#!!)!!J!! +`!%!!B!"`!'!!J!#J!*!!!)!!J!#!!(!!F!#!!)!!8!"`!)!!F!#3!!#!!)!!J!# +!!)!!J!#!!)!!N!!!X!"`!(!!F!"!!(!!3!"!!)!!3!"`!(!!F!"`!(!!B!"`!(! +!8!"J!(!!8!#`!(!!F!"`!(!!B!"`!'!!F!"`!,!!F!"`!(!!8!!`!&!!J!!!!*! +!!*!!!)!!F!#!!)!!J!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!8!"3!&!!8!"`!(! +!F!"`!(!!F!"`!(!!F!"`!&!!B!"`!)!!J!#!!)!!N!!!S!#J!,!!3!"3!)!!`!# +!!,!!F!"J!'!!F!#3!!"`!)!!N!!!S!"3!'!!B!#J!,!!F!#!!%!!F!#J!&!!J!# +3!!#!!)!!S!#!!*!!!*!!!)!!`!#`!'!!N!!!F!"`!%!!3!"`!*!!!)!!m!#J!+! +!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+! +!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!!!a63'F3!!%!!!!-!!!!!3!!@!#3#9J +!@!"B!%J!@!"B!&J!!!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J +!@!!S!#!!-!"3!%!!8!"3!#!!-!!`!%J!3!!S!%!!)!"!!%J!5!")!%J!5!")!%J +!5!")!%J!)!!S!$J!3!!i!%J!@!"3!%J!5!")!%!!3!")!%J!-!"!!%J!3!"3!%J +!5!")!%J!5!")!%J!5!"3!'!!3!"!!%!!+!"!!#J!+!")!#J!3!"!!%!!3!"!!$J +!3!"!!$!!1!"!!$!!B!"!!%!!3!"!!$J!3!!i!%!!3!"J!%!!3!"!!$!!)!!`!%J +!!!"3!&!!5!"!!%J!5!")!%!!3!"!!%!!3!"!!%!!3!"!!%!!3!!`!$!!-!!`!%! +!3!"!!%!!3!"!!%!!3!"!!%!!-!!i!%!!5!")!%J!5!"3!&J!@!"J!#J!-!")!'J +!5!"J!%!!1!!i!%!!8!"!!%J!8!"B!$!!1!!i!&J!B!"!!%J!+!"!!&J!-!")!&! +!5!")!&J!5!"3!&!!5!"S!'!!1!"3!%!!3!!S!#J!3!"3!%J!J!"B!&J!@!"B!&J +!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J!@!"B!&J +!@!"B!&J!@!"B!&J!@!"B!&J!!!XZP!"C!!%!!3!-!!!!!3!!S!#J!+!!S!#J!+! +!S!#J!)!!S!#J!+!!!!#J!+!!X!#`!,!!N!!!X!#J!+!!S!#J!+!!S!#J!+!!S!# +J!+!!3!"J!(!!S!"`!,!!S!!`!&!!8!"`!(!!3!"`!%!!F!#!!)!!J!#!!)!!J!# +!!)!!J!#!!%!!3!"J!)!!B!#!!,!!J!#!!)!!J!"`!(!!J!#!!'!!F!#3!!"`!-! +!N!!!J!#!!)!!J!"`!'!!J!#!!-!!J!#!!)!!8!"`!&!!J!#!!'!!J!#!!(!!J!# +!!'!!J!#!!%!!B!#!!%!!`!#!!)!!J!#!!'!!F!"J!)!!J!$!!)!!J!#!!&!!8!" +3!)!!J!#!!)!!J!"`!*!!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!)!!B!"J!'! +!B!#!!)!!J!#!!)!!J!#!!)!!J!#!!&!!B!"`!*!!!(!!F!#3!!#3!!#J!+!!X!" +3!'!!N!!!X!#3!!$J!(!!B!"J!+!!S!#!!*!!!+!!X!"J!(!!F!#J!-!!J!#!!'! +!F!$!!'!!S!#3!!#3!!#3!!$J!)!!J!#!!)!!X!$!!'!!S!"`!(!!3!"!!(!!N!! +!J!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+! +!X!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!!!$#lN!&N!!`!!!!`!!!! +"F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!!!!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!N!!!N!!!X!"`!(!!F!"`!(!!N!!!F!"`!(!!F!"`!'!!N!!!S!"`!$!!F!"`!*! +!!(!!F!"`!(!!N!!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!'!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(! +!F!"`!(!!S!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!!!$#li!&N!!J! +!!!`!!!!"!!#!!*!*J!#!!)!!B!#!!)!!J!!!!)!!J!#!!)!!J!#!!)!!J!#!!)! +!J!#!!)!!J!#!!)!!J!#!!$!!3!"3!*!!!(!!S!#!!$!!B!"J!(!!J!"!!(!!-!" +J!(!!F!"`!(!!F!"`!(!!F!"`!(!!-!"!!&!!F!"3!(!!N!!!B!"`!'!!F!"J!'! +!B!"`!%!!B!"`!'!!N!!!F!"J!(!!B!"`!'!!B!"`!'!!S!"J!'!!B!"3!&!!8!" +3!(!!3!"3!'!!8!"3!&!!3!"3!'!!3!"3!'!!3!#3!!"J!&!!B!"3!'!!8!"!!'! +!B!#!!'!!B!"3!&!!3!"3!(!!!!"J!'!!B!"J!(!!B!"`!&!!8!"3!&!!B!"3!&! +!8!"3!&!!8!"!!%!!8!"!!'!!8!"3!&!!8!"J!'!!B!"J!'!!8!"3!'!!F!"J!'! +!B!"`!+!!S!#3!!!`!%!!F!#3!!#!!,!!F!"`!(!!F!"`!&!!F!"`!)!!8!"3!&! +!J!#!!(!!F!"!!(!!N!!!8!"`!(!!J!"`!*!!!(!!B!"`!(!!N!!!J!"J!*!!!(! +!F!"!!%!!J!#3!!"J!-!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!# +!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!)!!J!#!!!!-,`` +!@3!"!!!!#J!!!!%!!+!!N!QJ!+!!S!#!!+!!S!#J!!!!S!#J!+!!S!#J!+!!S!# +J!+!!S!#J!+!!S!#J!+!!S!#J!+!!3!!`!&!!N!!!F!#3!!#3!!!`!&!!8!#!!(! +!3!"`!$!!F!#!!)!!J!#!!)!!J!#!!)!!J!#!!$!!3!"J!(!!B!#!!+!!N!!!J!# +!!)!!F!"`!)!!J!"3!(!!J!"`!*!!!)!!J!#!!)!!J!#!!)!!J!#3!!#`!(!!F!" +`!%!!F!"!!%!!J!"!!(!!F!"`!(!!F!"J!(!!F!"3!'!!F!"3!,!!F!"`!(!!F!" +J!(!!B!"`!(!!X!"`!(!!F!"3!$!!8!#!!!!!N!!!N!!!J!"`!)!!J!#!!(!!F!" +`!(!!F!"`!(!!F!"`!(!!F!"3!&!!8!"3!(!!F!"`!(!!F!"`!(!!F!"`!(!!8!" +J!(!!J!#!!)!!J!#3!!#J!+!!X!"!!&!!J!$!!)!!X!"`!'!!B!"`!*!!!(!!J!# +3!!#J!&!!B!"J!+!!X!"`!)!!3!"`!+!!8!#!!*!!!)!!J!#J!)!!N!!!N!!!J!$ +!!,!!B!#3!!"`!(!!3!"!!(!!N!!!F!$`!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!# +J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!#J!+!!S!# +J!+!!S!!!#bmJ!&N!!3!!!"J!!!"d!!!1e%KZrpBr2!!#6Ud))N(ZrqC$l[r@)0N +Jf6#43QG#3"!ZrqE346m!2blrm%kY!S)`(dM!+8!!%NKZrqFJ,!!5d+`!$N*"%Ll +rjNM"N!#",`"#3"!ZrqC)`#m!6Ud%%N)%%!4R!2p)60mBm%jH,Tp1G3%J6PErm%M +R!4K#CbmYqQ3r,J!)5'lrp%+R6UdM5K!ICfC`!E"Zrr4X"N)Z!!TJALmYqQ3r,J! +)6UdLSN+R,bhkC%kY)ASJAbC32@X!"2r`IJ*J,M!(`I`!$%Rc!"3`,!!+X'lrrQm +'8f`!#Q!3-#`!#V"ZrrjQ"MPmrrd!#P*(D3DqE[r`Em`GI!!"!!T-haL!6PiJAe4 +26Y"19J!!3UF[,ITN6UdKHL"I)&!`,J!-`I`!$#*Z!!K"m!!B)0N`N8jH)&pF6dl +36PErp%*R,bhkC$mZ!!a)E[rd3UG1V50+%"pR+#"Z!!K#3"!328$rpN*R,bhkC$m +Z!!a)E[rd)'i!#%KS!!&1V5*L%"p1AL"IA%p1d%j@!!![$#KZ!!J3,2h!CM3CEGL +rrEm3,2frCb*#CkQE3UF[2&""3dXr2!!-UD"+ReE!4!!C32fr(c`!!DQE'A`!!Ih +!%#cp[fB1,c`!23I32ca998kY$5SGE2fr!!`SAdjH,Tp1G8j@r[T)j`!B+'i!#%+ +R2c`(q8+R6UdUSLCI5'lqqMmm"p!!!!(k!#`!+J!+!!J!"!#3#3Arr`#3#3)!!!! +A!!3!!!!K!"!!!!!-!!%!$!#3#3%!$!!!!!-!!!!"!*!'J!!!#`"CN!!N!!!!!3! +"!"J!N!N'!"B!!!!'!!!!!3#3"S!!!!S!@C%N!!!!!3!"!!S!N!N&!!S!!!!#!!! +!!3#3"S!!!!X!@BmF!!!!!3!#!!`!N!N%!!S!!!!#!*!+J!!!#`"CMU3!!!!"!!- +!$!#3#3-!$!!!!!-!!!!"!*!'J!!!#`"CMTJ!!!!"!!%!$!!!!3#3"J%!$!!!!!- +!!!!"!*!'J!!!#`"CMT3!!!!"!!%!$!!!!)!!N!8"!!`!!!!$!!!!!3#3"S!!!!X +!@Bm8!!!!!3!"!!`!!!!%!*!&!3!-!!!!!`!!!!%!N!D!!!!,!&Q1i!!!!!%!!3! +-!!!!!J#3"3%!$!!!!!-!!!!"!*!'J!!!#`"CMh!!!!!"!!%!$!!!!!%!N!8#!!` +!!!!$!!!!!3#3"S!!!!S!@BlF!!!!S!!#!!)!!!!D!!!!!rrq!*!,!`#!!*!'rrm +!!3!!!!3!!!!"!!!!QJ!J!!`!"`!'!!)!!J!!!"S!!!!$rrm!N!X$!)!!N!Err`! +"!)$m!20p"5m!!`!"!)6be`K@K1`!"!!#!)[GD`M#"U)!!!!"!)i#3DY8k[m!"3! +"!*)!!)!!%E!!!3!#!*B!N!68!!!#Irm!QRrrIrprrm!!4f9XBNeKCf9ZG'&5Eh4 +$H@&Z4h+IEN*XBA8!!!"1!#B!#!!%!!3!"!#3#32rrJ#3#3%!!!!r!!3!!!!@!!% +$k!!!!!-!!3#3"3%!"!2S!!!!!3!(!qKRQ!!!!$`!1J!!!*J!$`!!!%J!5!#3"!, +`!N$rmIrZ!`N#8Q-#"5J$r!%!!!!"D!&S!*!%$V!,3!!"!3!!C!!"!!!!!3!#!!! +!!5F2!!%!N!i3!*!*%!$rYIqQ$bd,QJ!)!3#3$4N"!#!!$`!5![m#8J#3#3%!!3# +3$63!!3#3"eQ4$!#3%`%!!3!!!!`!!!!"!*!&"`2S!!-!!!!'!*!*'J!#!#d!2!! +!!'3!!!"l!!!!K3!!!)m!N!FQ!#!!"J#3"3)!"!#3"`Irr`#3#J,@!!!!*J!!!#B +!)!!'!!!!"!!#!*!*"rrr!*!6*J!J!!B!!!!%!!)!N!N(rrm!N"0%!#!!*!!!!"3 +!!J!%!*!(!rrr!*!24!#3(a3!N!N1CPJ!$QCB!!8!!!(!!+-!)*!%B5"`B4pRC5" +ZG@dIBQ9b)'PZ)'%J8Q&R9'PYC5!c,M)JCQNIE'80$3eLEfaN)'PdB@aTBb"eEQ4 +PFQaTEQ8JFh9`CA*cBh*TF(4cG@*cBh*TF(303fKTBf&REb`J3fpeFQPPFL`J-6" +`EfPZG(-X)$)d)("[D@jdFb`J$A*PC#!X)'*XG@80F'%ICf8")#"NB4pdC3%J)(4 +TE@8J!3d!!"8!!!!"!!!!!`!"!#i!#J!!!!-!!3!b!!%!!!!$!!%!-`!*!!!!!`! +"!$N!!3!!!!-!!3!k!!J!!!!$!!%!3`!"!!!!!`!"!%3!"`!!!!-!!3"2!!B!!!! +$!!%!@!!"!!!!!`!"!&N!"3!!!!-!!3"J!!%!!!!$!!%!BJ!%!!!!!`!"!'N!!3! +!!!-!!3"V!!-!!!!$!!%!F`!"!!!!!`!"!(8!!J!!!!-!!3"q!!%!!!!$!!%!J3! +"!!!!!`!$!)F!!3!!!!-!"!#,!!%!!!!$!!%!!3#3"!(S!!%!N!8C!*!%m$Irr`! +!4Id!N!6J"3#3$)!!,J#3""!!"!%X!!B!C!!"!!B!C!!&Tc!!!!%!!!!"%!!!!"! +!!!!b6Np"68&38%`"!*!A#A4PFh3c,R*KC`)!!J"5)bY%8L-V33#3#J)!8L-V4&) +M+d%!N"M2cMji!*!'!8)!N!`"Q58"8(0[EN&38%`$!*!Hr#8"8LTMD%&38%`#!*! +G!F%P!9*84d459&"'"J#3'!`,8Q&R9'PYC5!c,M)!!!%!!!!"%!!!!"!!!!!b!&C +Sc"H#!!!!(!!b!!"69&)J!!!!#Vrdrrm!N!9CMEa0fJ: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_5.5.rag b/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_5.5.rag new file mode 100644 index 000000000..927c5c37c Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/RagTime_5.5.rag differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/ScriptWriter_1 b/writerperfect/qa/unit/data/writer/libmwaw/pass/ScriptWriter_1 new file mode 100644 index 000000000..d9f8aff8e Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/ScriptWriter_1 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/SimpleText_1.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/SimpleText_1.0.hqx new file mode 100644 index 000000000..1c81129d6 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/SimpleText_1.0.hqx @@ -0,0 +1,11 @@ +(This file must be converted with BinHex 4.0) +:#R4PH(3a,R0dH(3!9%9B9(4dH(3!N!98!!!#&$6q35"cE@&XE#"6D@e`E'98CAK +d)(4PH(30BQpXC#"TG'&XD@-JG@jNCA*XD@jP$6%i)("[D@jdFb`J-6)JF'pTER4 +c$80SD@0KCfmX)%0[GA*TCA)06b8!!!%!!!!"iJ!!!1)!!!!b8&0*-N&A8e-"!*! +A#R4PH(3a,R0dH(3!!J!#!&4&@&4dG(Kd!*!)!J"849K8G(4iG!#3%)!!N!I2Y6C +R!*!'!K3!N!e9*3&5Ffaf8e4"5`%!N"jF*3&@59-c39"36!)!N"j5*3&D48*539" +36!%!N"MH!!X!N!8,!!N!"!!!!!N!N!NB!!X!#3!%!3!!#3#3#4`!#`!*!!3!!!! +*!*!*(3!,!!N!"!)!!!N!N!NM!!X!#3!%!!!!#3#3#53!#`!*!!3%!!!*!*!*,3! +,!!N!"!!!!!N!N!NZ!"J!%J!%!!!!%J#3#6N!%!!-!!3!!!!-!*!*3`!3!!`!N!8 +-!*!*6!!-!!S!&J!!!!`!N!J"!!!!!H)!!!$L!!!!-J"1)l!CYJ!!!"`!-J!!Fh4 +jE!!!!!S!J2rr!*!&6LCSD!3!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/StudentWritingCenter b/writerperfect/qa/unit/data/writer/libmwaw/pass/StudentWritingCenter new file mode 100644 index 000000000..5fd3c412b Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/StudentWritingCenter differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/TexEdit_2.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/TexEdit_2.0.hqx new file mode 100644 index 000000000..649b409af --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/TexEdit_2.0.hqx @@ -0,0 +1,14 @@ +(This file must be converted with BinHex 4.0) +:#h4PH(3b,R4PC'Pd!&4&@&483N)e!*!&8J!!!N+PF8%JFfeKE'`J9'9i,89NDA3 +JG'9iG!eLEfaN)'PdB@aTBb"eEQ4PFQaTEQ80-6JJF'pTER4c,#!a-L"`EfPZG(- +03fKTBf&REb`J3fpeFQPPFJdi,!!!!3!!!!(Z!!!!lJ!!!&3JG'9iG!eLEfaN)'P +dB@aTBb"eEQ4PFQaTEQ80-6JJF!YdCAKd-LjdC@4TG!)!!!"849K89%*#03#3#P4 +&@&483N)e!*!Bcl8f$3!!!&)!!!*#38029%&38%`&!*!')JE#!)!,!8&$6e4"8&" +-"J#3"L)(3J%!#`&"3dp84NT64`%!N!BL#%)"!!X"38029%C+8dF#!*!')JP#!J! +,!8&$6e4'5P0(!`#3"L),3J3!#`&"3dp84NT64`3!N!BL$d)!3!!!!0i!#`#3"3X +!#3!%!!!!#3#3#4B!#`!*!!3"!!!*!*!*'J!,!!N!"!!!!!N!N!NE!!X!#3!%!J! +!#3#3#5%!#`!*!!3!!!!*!*!*)J!,!!N!"!3!!!N!N!NV!!X!#3!%!!!!#3#3#5` +!'!!5!!3!!!!5!*!*0`!3!!`!"!!!!!`!N!P"!"!!$!#3"3`!N!P+!!`!#J!@!!! +!$!#3#3J!JJ"%!5)"q3!!!3!!!!(Z!!!!lJ!!!&3!9QM-'*`!!!!F!%B!!A0dH@` +!!!!5Gh*MG!!!!"i$k!#3"eE0(!2S!!F!!!$L!&E,h!CcG(PXCA-'GfPZC'ph'r8 +!: diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/WordMaker b/writerperfect/qa/unit/data/writer/libmwaw/pass/WordMaker new file mode 100644 index 000000000..5bab4677b Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/WordMaker differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_2.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_2.0 new file mode 100644 index 000000000..ce3f5d4ce Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_2.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_4.0 b/writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_4.0 new file mode 100644 index 000000000..9ebe17ac7 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/WriteNow_4.0 differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/WriterPlus b/writerperfect/qa/unit/data/writer/libmwaw/pass/WriterPlus new file mode 100644 index 000000000..f95fa2882 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libmwaw/pass/WriterPlus differ diff --git a/writerperfect/qa/unit/data/writer/libmwaw/pass/eDoc_2.0.hqx b/writerperfect/qa/unit/data/writer/libmwaw/pass/eDoc_2.0.hqx new file mode 100644 index 000000000..d558aacb3 --- /dev/null +++ b/writerperfect/qa/unit/data/writer/libmwaw/pass/eDoc_2.0.hqx @@ -0,0 +1,29 @@ +(This file must be converted with BinHex 4.0) +:#A4PH(3a,Q9NB`"P4'pMC84M8J#3#!NeQdX!N!3"!!!!#-F!!!I(!!!!EQFd#!! +!"@FJ#!!!"'F+BHBQ!'(L`801G4!BiB!3'1'!#A4PH(3a,Q9NB`)!!!"P4'pMC84 +M8J#3$'9%Ef0P4'05!*!Bcl8bT3#3"JNeDJlKL"!BiBJ3'1')%"KJ##3!B3$rG-& +#d)$6`0148i*Qq'$%6R@!$R*PE'pMBA4PAhG[FQaN!!"d!#"I)"mLAfFS-JN#33! +$C`J5`P1!C[*J'#)!j)PR"L,#8i&QqJ*!!!0J!K,#8FMrr%l3J!TD49*23P9'4N9 +5!*!'&,i!!3!!!Q)!!!*L!!!%3'l`BfZ!0QCSGQCjGjGiJ!"`F(J!!%N!N!!!CSL +(J!Kj!!C`Gj!!#)LACJF'Q!F)J!L!"J!*!*!!")CPH)8'CfCjGfH*!!B!"iL!#!N +!"`#3#T!!J!#3"i!!N!H!!*!-#3#3%*FH!!)M3fG`"J"hB!!!3!F!!!!(!!!!B!" +`!*!&"`FL-PB'Ce"`VqD2PmkpEEUiilYAYeSl3(!5XJ3LYYJ+XEdF2aUak1[riB& +B!&H+2`MCXqUH@HLR0R"9'c'['Y(MJR[Fm0krq8jG202,PPjm@LFZ@R,4+hdcq&' +18qQ9&ldm9b+NDV(cBrf2kMFMbaGLr(!S4GMpP$1Gm(#LF-F8B+[k!5Z3!2VZVaD +hS`#1`L1i)Ve)M`IMApZI,M%&%A0ZT)FFUJ+VDP1LH@R%`Blk$!#lPDeeCXG(4PT +c81&0jLq3!'EpB@'"&f28SBBYSi86!)[#N@FPE""HCPAr,#T`LTS6d%K@3"40pH1 +m'2PLpUq6IPcjkFfMT#1I4lR*DmQmSQkRIi'YQ0'`)Zar+KKR@MK4-)RFL6Vmp#" +b$EpD3*!!V5R3Y@0UaaCqVSTSk"d$D#MrFAV+L36kaie[f1,hdiTqiGNHSI1-[e$ +'X#,XG#KKKfMK4-JKp+3lYf%(T'jl%r@firb2CBRQP6SSjR[,pFFFI52h8)iiqDK +Kbl4`SQNI@pLraRKGMFrl*CqqTpA,0iSY48e11M04m*RBe)VkTmqr-CVpBqfaZbh +CATAjFN[5!VGMY!#3"Z[U9'KTFb"NEf0eE@9ZG#"hBA-JBh*PBA4PC#"eFfPZCb" +dD'8JC8423kSJFfKKFQ9hBA*P)(0[CR4hBA*P,L"*G#"MB@iJBQ8JGQPPGf9N)'& +ZC#"`FQPZG'9N)(9cD@jR)'9%6d-J8Q9KC'9b,#"K)'CbC@8JBfpYF'pZC@jd)'p +Q)'9%6d-Z$3e'Eh)JE@pbC5"TEQC[FQeKG'P[EL`JH@pe)'0KEL"fDA0TG#"dD'8 +JC8423b"hC@)JFfPdC5"KG$S0D(4dF$S[,h"PFR0[,RGKEQ&NEfmZCR)[E@PMD'9 +X,R4[G@0SEh3[!!!!D!!!"%$2Y6+Q"%&MG'%!J!#3"3-B!Q3!BQXS!'*UB!"LDK3 +!N!3+G'9iG$%ZB@0dBE%!!3!"!!J!BQX-!'*UR!!!!!%+!!!%!!!#%!#3"!-B!Q3 +!!3#3"J*L!!!%3!!!!Q)!!!3#!!3)8'&XBA4TEQm!N2F(3fpeFQPPFJ#3q!G$D'P +MB@G[!*$i"NGPEQ9fB3#3q`%!!!!)a`!!"mF!!!"Z!'*U$"Tb!!!!(!"Z!!0M8%P +$!!!!)P088L!!!!!Z5@jQE`!!!$TP4'0'!!!!4J!"rrm!N!Lrmrrr)!!#CJ!)F$! +!J2rr)!!$93"LDc!!J2rr!!!$`3"LD[J3M!: diff --git a/writerperfect/qa/unit/data/writer/libstaroffice/fail/.gitignore b/writerperfect/qa/unit/data/writer/libstaroffice/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libstaroffice/indeterminate/.gitignore b/writerperfect/qa/unit/data/writer/libstaroffice/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libstaroffice/pass/Writer_3.1.sdw b/writerperfect/qa/unit/data/writer/libstaroffice/pass/Writer_3.1.sdw new file mode 100644 index 000000000..0884942a4 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libstaroffice/pass/Writer_3.1.sdw differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/fail/.gitignore b/writerperfect/qa/unit/data/writer/libwpd/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libwpd/indeterminate/.gitignore b/writerperfect/qa/unit/data/writer/libwpd/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2007-1735-1.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2007-1735-1.wpd new file mode 100644 index 000000000..4d11b9379 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2007-1735-1.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1759-1.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1759-1.wpd new file mode 100644 index 000000000..9ff9a088d Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1759-1.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-1.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-1.wpd new file mode 100644 index 000000000..23c8aa302 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-1.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-2.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-2.wpd new file mode 100644 index 000000000..cca30a080 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/CVE-2015-1760-2.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/EDB-14344-1.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/EDB-14344-1.wpd new file mode 100644 index 000000000..8d2e51df6 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/EDB-14344-1.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/WP1.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/WP1.wpd new file mode 100644 index 000000000..7f635ad97 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/WP1.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/WP3.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/WP3.wpd new file mode 100644 index 000000000..75f4924e8 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/WP3.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/WP4.wp b/writerperfect/qa/unit/data/writer/libwpd/pass/WP4.wp new file mode 100644 index 000000000..6917b81e6 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/WP4.wp differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/WP5.wp b/writerperfect/qa/unit/data/writer/libwpd/pass/WP5.wp new file mode 100644 index 000000000..45932176f Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/WP5.wp differ diff --git a/writerperfect/qa/unit/data/writer/libwpd/pass/WP6.wpd b/writerperfect/qa/unit/data/writer/libwpd/pass/WP6.wpd new file mode 100644 index 000000000..dc8aceca5 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwpd/pass/WP6.wpd differ diff --git a/writerperfect/qa/unit/data/writer/libwps/fail/.gitignore b/writerperfect/qa/unit/data/writer/libwps/fail/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libwps/indeterminate/.gitignore b/writerperfect/qa/unit/data/writer/libwps/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/PocketWord.psw b/writerperfect/qa/unit/data/writer/libwps/pass/PocketWord.psw new file mode 100644 index 000000000..75c0b60f3 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/PocketWord.psw differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Word_5.0_DOS.doc b/writerperfect/qa/unit/data/writer/libwps/pass/Word_5.0_DOS.doc new file mode 100644 index 000000000..5e5e45912 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Word_5.0_DOS.doc differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Works_2.00A_DOS.wps b/writerperfect/qa/unit/data/writer/libwps/pass/Works_2.00A_DOS.wps new file mode 100644 index 000000000..4bccbbd18 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Works_2.00A_DOS.wps differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Works_3.0.wps b/writerperfect/qa/unit/data/writer/libwps/pass/Works_3.0.wps new file mode 100644 index 000000000..74f46091e Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Works_3.0.wps differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Works_4.5.wps b/writerperfect/qa/unit/data/writer/libwps/pass/Works_4.5.wps new file mode 100644 index 000000000..65c25a002 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Works_4.5.wps differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Works_5.0.wps b/writerperfect/qa/unit/data/writer/libwps/pass/Works_5.0.wps new file mode 100644 index 000000000..97bb269f3 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Works_5.0.wps differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Works_6.0.wps b/writerperfect/qa/unit/data/writer/libwps/pass/Works_6.0.wps new file mode 100644 index 000000000..d0a40c4c0 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Works_6.0.wps differ diff --git a/writerperfect/qa/unit/data/writer/libwps/pass/Write_3.1.wri b/writerperfect/qa/unit/data/writer/libwps/pass/Write_3.1.wri new file mode 100644 index 000000000..458482de0 Binary files /dev/null and b/writerperfect/qa/unit/data/writer/libwps/pass/Write_3.1.wri differ diff --git a/writerperfect/qa/unit/data/writerperfect-dialogs-test.txt b/writerperfect/qa/unit/data/writerperfect-dialogs-test.txt new file mode 100644 index 000000000..db97ac5cc --- /dev/null +++ b/writerperfect/qa/unit/data/writerperfect-dialogs-test.txt @@ -0,0 +1,38 @@ +# -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +# This file contains all dialogs that the unit tests in the module +# will work on if it is in script mode. It will read one-by-one, +# try to open it and create a screenshot that will be saved in +# workdir/screenshots using the pattern of the ui-file name. +# +# Syntax: +# - empty lines are allowed +# - lines starting with '#' are treated as comment +# - all other lines should contain a *.ui filename in the same +# notation as in the dialog constructors (see code) + +# +# The 'known' dialogs which have a hard-coded representation +# in registerKnownDialogsByID/createDialogByID +# + +# No known dialogs in writerperfect for now + +# +# Dialogs without a hard-coded representation. These will +# be visualized using a fallback based on weld::Builder +# + +# currently deactivated, leads to problems and the test to not work +# This is typically a hint that these should be hard-coded in the +# test case since they need some document and model data to work + +writerperfect/ui/exportepub.ui +#writerperfect/ui/wpfencodingdialog.ui diff --git a/writerperfect/qa/unit/stream.cxx b/writerperfect/qa/unit/stream.cxx new file mode 100644 index 000000000..168967728 --- /dev/null +++ b/writerperfect/qa/unit/stream.cxx @@ -0,0 +1,16 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/wpftimport.cxx b/writerperfect/qa/unit/wpftimport.cxx new file mode 100644 index 000000000..5034f159e --- /dev/null +++ b/writerperfect/qa/unit/wpftimport.cxx @@ -0,0 +1,29 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "wpftimport.hxx" + +#include + +#include + +#include + +#include + +css::uno::Reference createDummyInput() +{ + rtl::Reference xDummyInput( + new comphelper::SequenceInputStream(css::uno::Sequence())); + return xDummyInput; +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/wpftimport.hxx b/writerperfect/qa/unit/wpftimport.hxx new file mode 100644 index 000000000..688bf8f31 --- /dev/null +++ b/writerperfect/qa/unit/wpftimport.hxx @@ -0,0 +1,30 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +namespace com +{ +namespace sun +{ +namespace star +{ +namespace io +{ +class XInputStream; +} +} +} +} + +css::uno::Reference createDummyInput(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/wpftqahelperdllapi.h b/writerperfect/qa/unit/wpftqahelperdllapi.h new file mode 100644 index 000000000..05293fdd0 --- /dev/null +++ b/writerperfect/qa/unit/wpftqahelperdllapi.h @@ -0,0 +1,21 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#if defined(WPFTQAHELPER_DLLIMPLEMENTATION) +#define WPFTQAHELPER_DLLPUBLIC SAL_DLLPUBLIC_EXPORT +#else +#define WPFTQAHELPER_DLLPUBLIC SAL_DLLPUBLIC_IMPORT +#endif +#define WPFTQAHELPER_DLLPRIVATE SAL_DLLPRIVATE + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/writerperfect-dialogs-test.cxx b/writerperfect/qa/unit/writerperfect-dialogs-test.cxx new file mode 100644 index 000000000..002907793 --- /dev/null +++ b/writerperfect/qa/unit/writerperfect-dialogs-test.cxx @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include + +using namespace ::com::sun::star; + +/// Test opening a dialog in writerperfect +class WpfDialogsTest : public ScreenshotTest +{ +private: + /// helper method to populate KnownDialogs, called in setUp(). Needs to be + /// written and has to add entries to KnownDialogs + virtual void registerKnownDialogsByID(mapType& rKnownDialogs) override; + + /// dialog creation for known dialogs by ID. Has to be implemented for + /// each registered known dialog + virtual VclPtr createDialogByID(sal_uInt32 nID) override; + +public: + WpfDialogsTest(); + + // try to open a dialog + void openAnyDialog(); + + CPPUNIT_TEST_SUITE(WpfDialogsTest); + CPPUNIT_TEST(openAnyDialog); + CPPUNIT_TEST_SUITE_END(); +}; + +WpfDialogsTest::WpfDialogsTest() {} + +void WpfDialogsTest::registerKnownDialogsByID(mapType& /*rKnownDialogs*/) +{ + // fill map of known dialogs +} + +VclPtr WpfDialogsTest::createDialogByID(sal_uInt32 /*nID*/) { return nullptr; } + +void WpfDialogsTest::openAnyDialog() +{ + /// process input file containing the UXMLDescriptions of the dialogs to dump + processDialogBatchFile(u"writerperfect/qa/unit/data/writerperfect-dialogs-test.txt"); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WpfDialogsTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/MSWorksCalcImportFilter.cxx b/writerperfect/source/calc/MSWorksCalcImportFilter.cxx new file mode 100644 index 000000000..b0118eaad --- /dev/null +++ b/writerperfect/source/calc/MSWorksCalcImportFilter.cxx @@ -0,0 +1,474 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MSWorksCalcImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include "MSWorksCalcImportFilter.hxx" +#include + +#include +#include + +using namespace ::com::sun::star; + +namespace MSWorksCalcImportFilterInternal +{ +/// returns the list of stream name present in a folder +static uno::Reference +getResultSet(const css::uno::Reference& xPackageContent) +{ + try + { + if (xPackageContent.is()) + { + ucbhelper::Content packageContent(xPackageContent, + uno::Reference(), + comphelper::getProcessComponentContext()); + uno::Sequence lPropNames{ "Title" }; + uno::Reference xResultSet( + packageContent.createCursor(lPropNames, ucbhelper::INCLUDE_DOCUMENTS_ONLY)); + return xResultSet; + } + return uno::Reference(); + } + catch (...) + { + SAL_WARN("writerperfect", + "ignoring Exception in MSWorksCalcImportFilterInternal:getResultSet"); + return uno::Reference(); + } +} + +namespace +{ +/** internal class used to create a structured RVNGInputStream from a list of path and their short names + */ +class FolderStream : public librevenge::RVNGInputStream +{ +public: + //! constructor + explicit FolderStream(const css::uno::Reference& xContent) + : m_xContent(xContent) + { + } + + //! add a file + void addFile(OUString const& path, std::string const& shortName) + { + m_nameToPathMap[shortName] = path; + } + /**! reads numbytes data. + + * \return a pointer to the read elements + */ + const unsigned char* read(unsigned long, unsigned long&) override { return nullptr; } + //! returns actual offset position + long tell() override { return 0; } + /*! \brief seeks to an offset position, from actual, beginning or ending position + * \return 0 if ok + */ + int seek(long, librevenge::RVNG_SEEK_TYPE) override { return 1; } + //! returns true if we are at the end of the section/file + bool isEnd() override { return true; } + + /** returns true if the stream is ole + + \sa returns always false*/ + bool isStructured() override { return true; } + /** returns the number of sub streams. + + \sa returns always 2*/ + unsigned subStreamCount() override { return unsigned(m_nameToPathMap.size()); } + /** returns the ith sub streams name */ + const char* subStreamName(unsigned id) override + { + if (m_nameToPathMap.size() < id) + return nullptr; + + std::map::const_iterator it = m_nameToPathMap.begin(); + std::advance(it, id); + return it->first.c_str(); + } + /** returns true if a substream with name exists */ + bool existsSubStream(const char* name) override + { + return name && m_nameToPathMap.find(name) != m_nameToPathMap.end(); + } + /** return a new stream for an OLE zone */ + librevenge::RVNGInputStream* getSubStreamByName(const char* name) override + { + if (m_nameToPathMap.find(name) == m_nameToPathMap.end() || !m_xContent.is()) + return nullptr; + + try + { + const uno::Reference xResultSet = getResultSet(m_xContent); + if (xResultSet.is() && xResultSet->first()) + { + const uno::Reference xContentAccess(xResultSet, + uno::UNO_QUERY_THROW); + const uno::Reference xRow(xResultSet, uno::UNO_QUERY_THROW); + OUString lPath = m_nameToPathMap.find(name)->second; + do + { + const OUString aTitle(xRow->getString(1)); + if (aTitle != lPath) + continue; + + const uno::Reference xSubContent(xContentAccess->queryContent()); + ucbhelper::Content aSubContent(xSubContent, + uno::Reference(), + comphelper::getProcessComponentContext()); + uno::Reference xInputStream = aSubContent.openStream(); + if (xInputStream.is()) + return new writerperfect::WPXSvInputStream(xInputStream); + break; + } while (xResultSet->next()); + } + } + catch (...) + { + SAL_WARN("writerperfect", "ignoring Exception in " + "MSWorksCalcImportFilterInternal::FolderStream::" + "getSubStreamByName"); + } + + return nullptr; + } + /** return a new stream for an OLE zone */ + librevenge::RVNGInputStream* getSubStreamById(unsigned id) override + { + char const* name = subStreamName(id); + return name ? getSubStreamByName(name) : nullptr; + } + +private: + /// the main container + uno::Reference m_xContent; + /// the map short name to path + std::map m_nameToPathMap; + FolderStream(const FolderStream&) = delete; + FolderStream& operator=(const FolderStream&) = delete; +}; +} +} + +//////////////////////////////////////////////////////////// +bool MSWorksCalcImportFilter::doImportDocument(weld::Window* pParent, + librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, + utl::MediaDescriptor& mediaDescriptor) +{ + libwps::WPSKind kind = libwps::WPS_TEXT; + libwps::WPSCreator creator; + bool needEncoding; + const libwps::WPSConfidence confidence + = libwps::WPSDocument::isFileFormatSupported(&rInput, kind, creator, needEncoding); + + if ((kind != libwps::WPS_SPREADSHEET && kind != libwps::WPS_DATABASE) + || (confidence == libwps::WPS_CONFIDENCE_NONE)) + return false; + std::string fileEncoding; + if (needEncoding) + { + OUString encoding; + // first check if we can find the encoding in the filter options (headless mode) + mediaDescriptor[utl::MediaDescriptor::PROP_FILTEROPTIONS] >>= encoding; + if (!encoding.isEmpty()) // TODO: check if the encoding string is valid + fileEncoding = encoding.toUtf8().getStr(); + else + { + OUString title; + switch (creator) + { + case libwps::WPS_MSWORKS: + title = WpResId(STR_ENCODING_DIALOG_TITLE_MSWORKS); + encoding = "CP850"; + break; + case libwps::WPS_LOTUS: + title = WpResId(STR_ENCODING_DIALOG_TITLE_LOTUS); + encoding = "CP437"; + break; + case libwps::WPS_SYMPHONY: + title = WpResId(STR_ENCODING_DIALOG_TITLE_SYMPHONY); + encoding = "CP437"; + break; + case libwps::WPS_QUATTRO_PRO: + title = WpResId(STR_ENCODING_DIALOG_TITLE_QUATTROPRO); + encoding = "CP437"; + break; + case libwps::WPS_RESERVED_2: + title = WpResId(STR_ENCODING_DIALOG_TITLE_MSMULTIPLAN); + encoding = "CP437"; + break; + default: + SAL_INFO("writerperfect", "unexpected creator: " << creator); + title = WpResId(STR_ENCODING_DIALOG_TITLE); + encoding = "CP437"; + break; + } + + fileEncoding = encoding.toUtf8().getStr(); // set default to the proposed encoding + try + { + writerperfect::WPFTEncodingDialog aDlg(pParent, title, encoding); + if (aDlg.run() == RET_OK) + { + if (!aDlg.GetEncoding().isEmpty()) + fileEncoding = aDlg.GetEncoding().toUtf8().getStr(); + } + // we can fail because we are in headless mode, the user has cancelled conversion, ... + else if (aDlg.hasUserCalledCancel()) + return false; + } + catch (...) + { + SAL_WARN("writerperfect", + "ignoring Exception in MSWorksCalcImportFilter::doImportDocument"); + } + } + } + OString aUtf8Passwd; + if (confidence == libwps::WPS_CONFIDENCE_SUPPORTED_ENCRYPTION) + { + OUString sPassword; + // now check if we can find the password in the properties + // (just in case, "soffice --headless" adds an option to send password) + mediaDescriptor[utl::MediaDescriptor::PROP_PASSWORD] >>= sPassword; + if (!sPassword.isEmpty()) + aUtf8Passwd = OUStringToOString(sPassword, RTL_TEXTENCODING_UTF8); + else + { + // ok, ask the user for a password + try + { + SfxPasswordDialog aPasswdDlg(pParent); + aPasswdDlg.SetMinLen(1); + if (!aPasswdDlg.run()) + return false; + OUString aPasswd = aPasswdDlg.GetPassword(); + aUtf8Passwd = OUStringToOString(aPasswd, RTL_TEXTENCODING_UTF8); + } + catch (...) + { + return false; + } + } + } + return libwps::WPS_OK + == libwps::WPSDocument::parse(&rInput, &rGenerator, + confidence == libwps::WPS_CONFIDENCE_SUPPORTED_ENCRYPTION + ? aUtf8Passwd.getStr() + : nullptr, + fileEncoding.c_str()); +} + +//XExtendedFilterDetection +sal_Bool +MSWorksCalcImportFilter::filter(const css::uno::Sequence& rDescriptor) +{ + OUString sUrl; + css::uno::Reference xInputStream; + css::uno::Reference xContent; + css::uno::Reference xDialogParent; + + for (const auto& rValue : rDescriptor) + { + if (rValue.Name == "InputStream") + rValue.Value >>= xInputStream; + else if (rValue.Name == "UCBContent") + rValue.Value >>= xContent; + else if (rValue.Name == "FileName" || rValue.Name == "URL") + rValue.Value >>= sUrl; + else if (rValue.Name == "ParentWindow") + rValue.Value >>= xDialogParent; + } + + if (!getXContext().is() || !xInputStream.is()) + { + OSL_ASSERT(false); + return false; + } + + // An XML import service: what we push sax messages to... + css::uno::Reference xInternalFilter + = getXContext()->getServiceManager()->createInstanceWithContext( + writerperfect::DocumentHandlerFor::name(), getXContext()); + assert(xInternalFilter); + css::uno::Reference xInternalHandler(xInternalFilter, + css::uno::UNO_QUERY); + assert(xInternalHandler); + + // The XImporter sets up an empty target document for XDocumentHandler to write to... + css::uno::Reference xImporter(xInternalHandler, css::uno::UNO_QUERY); + assert(xImporter); + xImporter->setTargetDocument(getTargetDocument()); + + // OO Graphics Handler: abstract class to handle document SAX messages, concrete implementation here + // writes to in-memory target doc + writerperfect::DocumentHandler aHandler( + new SvXMLLegacyToFastDocHandler(static_cast(xInternalHandler.get()))); + + writerperfect::WPXSvInputStream input(xInputStream); + OdsGenerator exporter; + exporter.addDocumentHandler(&aHandler, ODF_FLAT_XML); + doRegisterHandlers(exporter); + + utl::MediaDescriptor aDescriptor(rDescriptor); + try + { + // time to check if the file is a WK3 file and a FM3 file is + // present + bool checkForFM3 = false; + if (input.seek(0, librevenge::RVNG_SEEK_SET) == 0 && xContent.is() + && INetURLObject(sUrl).getExtension().equalsIgnoreAsciiCase("WK3")) + { + // check if the file header corresponds to a .wk3 file + unsigned long numBytesRead; + const unsigned char* data = input.read(6, numBytesRead); + if (data && numBytesRead == 6 && data[0] == 0 && data[1] == 0 && data[2] == 0x1a + && data[3] == 0 && data[4] < 2 && data[5] == 0x10) + checkForFM3 = true; + } + if (checkForFM3) + { + // check if the format file exists + const css::uno::Reference xChild(xContent, uno::UNO_QUERY); + if (xChild.is()) + { + OUString sWM3Name; + OUString sFM3Name; + const css::uno::Reference xPackageContent(xChild->getParent(), + uno::UNO_QUERY); + uno::Reference xResultSet + = MSWorksCalcImportFilterInternal::getResultSet(xPackageContent); + if (xResultSet.is() && xResultSet->first()) + { + const uno::Reference xContentAccess(xResultSet, + uno::UNO_QUERY_THROW); + const uno::Reference xRow(xResultSet, uno::UNO_QUERY_THROW); + INetURLObject aTmpUrl(sUrl); + sWM3Name = aTmpUrl.getName(INetURLObject::LAST_SEGMENT, true, + INetURLObject::DecodeMechanism::WithCharset); + aTmpUrl.setExtension(u"FM3"); + const OUString& sTestFM3Name + = aTmpUrl.getName(INetURLObject::LAST_SEGMENT, true, + INetURLObject::DecodeMechanism::WithCharset); + do + { + const OUString& aTitle(xRow->getString(1)); + if (aTitle.equalsIgnoreAsciiCase(sTestFM3Name)) + sFM3Name = aTitle; + } while (xResultSet->next() && sFM3Name.isEmpty()); + } + if (!sFM3Name.isEmpty()) + { + MSWorksCalcImportFilterInternal::FolderStream structuredInput(xPackageContent); + structuredInput.addFile(sWM3Name, "WK3"); + structuredInput.addFile(sFM3Name, "FM3"); + + libwps::WPSKind kind = libwps::WPS_TEXT; + libwps::WPSCreator creator; + bool needEncoding; + const libwps::WPSConfidence confidence + = libwps::WPSDocument::isFileFormatSupported(&structuredInput, kind, + creator, needEncoding); + if (confidence != libwps::WPS_CONFIDENCE_NONE) + return doImportDocument(Application::GetFrameWeld(xDialogParent), + structuredInput, exporter, aDescriptor); + } + } + } + } + catch (...) + { + } + + return doImportDocument(Application::GetFrameWeld(xDialogParent), input, exporter, aDescriptor); +} + +bool MSWorksCalcImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, + OUString& rTypeName) +{ + libwps::WPSKind kind = libwps::WPS_TEXT; + libwps::WPSCreator creator; + bool needEncoding; + const libwps::WPSConfidence confidence + = libwps::WPSDocument::isFileFormatSupported(&rInput, kind, creator, needEncoding); + + if ((kind == libwps::WPS_SPREADSHEET || kind == libwps::WPS_DATABASE) + && confidence != libwps::WPS_CONFIDENCE_NONE) + { + switch (creator) + { + case libwps::WPS_MSWORKS: + rTypeName = "calc_MS_Works_Document"; + break; + case libwps::WPS_LOTUS: + case libwps::WPS_SYMPHONY: + rTypeName = "calc_WPS_Lotus_Document"; + break; + case libwps::WPS_QUATTRO_PRO: + rTypeName = "calc_WPS_QPro_Document"; + break; + case libwps::WPS_RESERVED_2: + rTypeName = "calc_MS_Multiplan"; + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void MSWorksCalcImportFilter::doRegisterHandlers(OdsGenerator&) {} + +// XServiceInfo +OUString SAL_CALL MSWorksCalcImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Calc.MSWorksCalcImportFilter"; +} + +sal_Bool SAL_CALL MSWorksCalcImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL MSWorksCalcImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Calc_MSWorksCalcImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MSWorksCalcImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/MSWorksCalcImportFilter.hxx b/writerperfect/source/calc/MSWorksCalcImportFilter.hxx new file mode 100644 index 000000000..d0ce3e1fc --- /dev/null +++ b/writerperfect/source/calc/MSWorksCalcImportFilter.hxx @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MSWorksCalcImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MSWorksCalcImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + + //XFilter + virtual sal_Bool SAL_CALL + filter(const css::uno::Sequence& rDescriptor) override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdsGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/MWAWCalcImportFilter.cxx b/writerperfect/source/calc/MWAWCalcImportFilter.cxx new file mode 100644 index 000000000..186084b17 --- /dev/null +++ b/writerperfect/source/calc/MWAWCalcImportFilter.cxx @@ -0,0 +1,124 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MWAWCalcImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "MWAWCalcImportFilter.hxx" + +static bool handleEmbeddedMWAWGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedMWAWSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeSpreadsheet(data, &exporter); +} + +bool MWAWCalcImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) +{ + return MWAWDocument::MWAW_R_OK == MWAWDocument::parse(&rInput, &rGenerator); +} + +bool MWAWCalcImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + rTypeName.clear(); + + MWAWDocument::Type docType = MWAWDocument::MWAW_T_UNKNOWN; + MWAWDocument::Kind docKind = MWAWDocument::MWAW_K_UNKNOWN; + const MWAWDocument::Confidence confidence + = MWAWDocument::isFileFormatSupported(&rInput, docType, docKind); + + if (confidence == MWAWDocument::MWAW_C_EXCELLENT) + { + switch (docKind) + { + case MWAWDocument::MWAW_K_DATABASE: + switch (docType) + { + case MWAWDocument::MWAW_T_CLARISWORKS: + rTypeName = "calc_ClarisWorks"; + break; + case MWAWDocument::MWAW_T_MICROSOFTWORKS: + rTypeName = "calc_Mac_Works"; + break; + default: + rTypeName = "MWAW_Database"; + break; + } + break; + case MWAWDocument::MWAW_K_SPREADSHEET: + switch (docType) + { + case MWAWDocument::MWAW_T_CLARISRESOLVE: + rTypeName = "calc_Claris_Resolve"; + break; + case MWAWDocument::MWAW_T_CLARISWORKS: + rTypeName = "calc_ClarisWorks"; + break; + case MWAWDocument::MWAW_T_MICROSOFTWORKS: + rTypeName = "calc_Mac_Works"; + break; + default: + rTypeName = "MWAW_Spreadsheet"; + break; + } + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void MWAWCalcImportFilter::doRegisterHandlers(OdsGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/mwaw-ods", + &handleEmbeddedMWAWSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL MWAWCalcImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Calc.MWAWCalcImportFilter"; +} + +sal_Bool SAL_CALL MWAWCalcImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL MWAWCalcImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Calc_MWAWCalcImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MWAWCalcImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/MWAWCalcImportFilter.hxx b/writerperfect/source/calc/MWAWCalcImportFilter.hxx new file mode 100644 index 000000000..aa574315d --- /dev/null +++ b/writerperfect/source/calc/MWAWCalcImportFilter.hxx @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MWAWCalcImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MWAWCalcImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdsGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/NumbersImportFilter.cxx b/writerperfect/source/calc/NumbersImportFilter.cxx new file mode 100644 index 000000000..813684361 --- /dev/null +++ b/writerperfect/source/calc/NumbersImportFilter.cxx @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* NumbersImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "NumbersImportFilter.hxx" + +using libetonyek::EtonyekDocument; + +bool NumbersImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) +{ + return EtonyekDocument::parse(&rInput, &rGenerator); +} + +bool NumbersImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + EtonyekDocument::Type type = EtonyekDocument::TYPE_UNKNOWN; + const EtonyekDocument::Confidence confidence = EtonyekDocument::isSupported(&rInput, &type); + if ((confidence == EtonyekDocument::CONFIDENCE_EXCELLENT) + && (type == EtonyekDocument::TYPE_NUMBERS)) + { + rTypeName = "calc_AppleNumbers"; + return true; + } + + return false; +} + +void NumbersImportFilter::doRegisterHandlers(OdsGenerator&) {} + +// XServiceInfo +OUString SAL_CALL NumbersImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Calc.NumbersImportFilter"; +} + +sal_Bool SAL_CALL NumbersImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL NumbersImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Calc_NumbersImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new NumbersImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/NumbersImportFilter.hxx b/writerperfect/source/calc/NumbersImportFilter.hxx new file mode 100644 index 000000000..96db0b689 --- /dev/null +++ b/writerperfect/source/calc/NumbersImportFilter.hxx @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class NumbersImportFilter : public writerperfect::ImportFilter +{ +public: + explicit NumbersImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdsGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/StarOfficeCalcImportFilter.cxx b/writerperfect/source/calc/StarOfficeCalcImportFilter.cxx new file mode 100644 index 000000000..de7e30e44 --- /dev/null +++ b/writerperfect/source/calc/StarOfficeCalcImportFilter.cxx @@ -0,0 +1,99 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "StarOfficeCalcImportFilter.hxx" + +using com::sun::star::uno::Sequence; +using com::sun::star::uno::XComponentContext; +using com::sun::star::uno::XInterface; + +static bool handleEmbeddedSTOFFGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedSTOFFSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeSpreadsheet(data, &exporter); +} + +bool StarOfficeCalcImportFilter::doImportDocument(weld::Window*, + librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) +{ + return STOFFDocument::STOFF_R_OK == STOFFDocument::parse(&rInput, &rGenerator); +} + +bool StarOfficeCalcImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, + OUString& rTypeName) +{ + rTypeName.clear(); + STOFFDocument::Kind docKind = STOFFDocument::STOFF_K_UNKNOWN; + const STOFFDocument::Confidence confidence + = STOFFDocument::isFileFormatSupported(&rInput, docKind); + if (confidence == STOFFDocument::STOFF_C_EXCELLENT + || confidence == STOFFDocument::STOFF_C_SUPPORTED_ENCRYPTION) + { + switch (docKind) + { + case STOFFDocument::STOFF_K_DATABASE: + case STOFFDocument::STOFF_K_SPREADSHEET: + rTypeName = "StarOffice_Spreadsheet"; + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void StarOfficeCalcImportFilter::doRegisterHandlers(OdsGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/stoff-odg", &handleEmbeddedSTOFFGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/stoff-ods", + &handleEmbeddedSTOFFSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL StarOfficeCalcImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Calc.StarOfficeCalcImportFilter"; +} + +sal_Bool SAL_CALL StarOfficeCalcImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +Sequence SAL_CALL StarOfficeCalcImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Calc_StarOfficeCalcImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new StarOfficeCalcImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/StarOfficeCalcImportFilter.hxx b/writerperfect/source/calc/StarOfficeCalcImportFilter.hxx new file mode 100644 index 000000000..0b11e5166 --- /dev/null +++ b/writerperfect/source/calc/StarOfficeCalcImportFilter.hxx @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class StarOfficeCalcImportFilter : public writerperfect::ImportFilter +{ +public: + explicit StarOfficeCalcImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdsGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdsGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/calc/wpftcalc.component b/writerperfect/source/calc/wpftcalc.component new file mode 100644 index 000000000..404d09b6c --- /dev/null +++ b/writerperfect/source/calc/wpftcalc.component @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/writerperfect/source/common/DirectoryStream.cxx b/writerperfect/source/common/DirectoryStream.cxx new file mode 100644 index 000000000..28c38daa6 --- /dev/null +++ b/writerperfect/source/common/DirectoryStream.cxx @@ -0,0 +1,221 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* writerperfect + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2007 Fridrich Strba (fridrich.strba@bluewin.ch) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + * + * For further information visit http://libwpd.sourceforge.net + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +#include + +#include +#include + +namespace io = com::sun::star::io; +namespace sdbc = com::sun::star::sdbc; +namespace ucb = com::sun::star::ucb; +namespace uno = com::sun::star::uno; + +namespace writerperfect +{ +namespace +{ +uno::Reference findStream(ucbhelper::Content& rContent, std::u16string_view rName) +{ + uno::Reference xInputStream; + + uno::Sequence lPropNames{ "Title" }; + try + { + const uno::Reference xResultSet( + rContent.createCursor(lPropNames, ucbhelper::INCLUDE_DOCUMENTS_ONLY)); + if (xResultSet->first()) + { + const uno::Reference xContentAccess(xResultSet, + uno::UNO_QUERY_THROW); + const uno::Reference xRow(xResultSet, uno::UNO_QUERY_THROW); + do + { + const OUString aTitle(xRow->getString(1)); + if (aTitle == rName) + { + const uno::Reference xSubContent(xContentAccess->queryContent()); + ucbhelper::Content aSubContent(xSubContent, + uno::Reference(), + comphelper::getProcessComponentContext()); + xInputStream = aSubContent.openStream(); + break; + } + } while (xResultSet->next()); + } + } + catch (const uno::RuntimeException&) + { + // ignore + } + catch (const uno::Exception&) + { + // ignore + } + + return xInputStream; +} +} + +struct DirectoryStream::Impl +{ + explicit Impl(const uno::Reference& rxContent); + + uno::Reference xContent; +}; + +DirectoryStream::Impl::Impl(const uno::Reference& rxContent) + : xContent(rxContent) +{ +} + +DirectoryStream::DirectoryStream(const css::uno::Reference& xContent) + : m_pImpl(isDirectory(xContent) ? new Impl(xContent) : nullptr) +{ +} + +DirectoryStream::~DirectoryStream() {} + +bool DirectoryStream::isDirectory(const css::uno::Reference& xContent) +{ + try + { + if (!xContent.is()) + return false; + + ucbhelper::Content aContent(xContent, uno::Reference(), + comphelper::getProcessComponentContext()); + return aContent.isFolder(); + } + catch (...) + { + return false; + } +} + +std::unique_ptr +DirectoryStream::createForParent(const css::uno::Reference& xContent) +{ + try + { + if (!xContent.is()) + return nullptr; + + std::unique_ptr pDir; + + const uno::Reference xChild(xContent, uno::UNO_QUERY); + if (xChild.is()) + { + const uno::Reference xDirContent(xChild->getParent(), uno::UNO_QUERY); + if (xDirContent.is()) + { + pDir = std::make_unique(xDirContent); + if (!pDir->isStructured()) + pDir.reset(); + } + } + + return pDir; + } + catch (...) + { + return nullptr; + } +} + +css::uno::Reference DirectoryStream::getContent() const +{ + if (!m_pImpl) + return css::uno::Reference(); + return m_pImpl->xContent; +} + +bool DirectoryStream::isStructured() { return m_pImpl != nullptr; } + +unsigned DirectoryStream::subStreamCount() +{ + // TODO: implement me + return 0; +} + +const char* DirectoryStream::subStreamName(unsigned /* id */) +{ + // TODO: implement me + return nullptr; +} + +bool DirectoryStream::existsSubStream(const char* /* name */) +{ + // TODO: implement me + return false; +} + +librevenge::RVNGInputStream* DirectoryStream::getSubStreamByName(const char* const pName) +{ + if (!m_pImpl) + return nullptr; + + ucbhelper::Content aContent(m_pImpl->xContent, uno::Reference(), + comphelper::getProcessComponentContext()); + const uno::Reference xInputStream( + findStream(aContent, OUString::createFromAscii(pName))); + if (xInputStream.is()) + return new WPXSvInputStream(xInputStream); + + return nullptr; +} + +librevenge::RVNGInputStream* DirectoryStream::getSubStreamById(unsigned /* id */) +{ + // TODO: implement me + return nullptr; +} + +const unsigned char* DirectoryStream::read(unsigned long, unsigned long& nNumBytesRead) +{ + nNumBytesRead = 0; + return nullptr; +} + +int DirectoryStream::seek(long, librevenge::RVNG_SEEK_TYPE) { return -1; } + +long DirectoryStream::tell() { return 0; } + +bool DirectoryStream::isEnd() { return true; } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/common/DocumentHandler.cxx b/writerperfect/source/common/DocumentHandler.cxx new file mode 100644 index 000000000..6b5ffe58a --- /dev/null +++ b/writerperfect/source/common/DocumentHandler.cxx @@ -0,0 +1,181 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * For further information visit http://libwpd.sourceforge.net + */ + +#include + +#include + +#include +#include +#include + +#include +#include + +namespace writerperfect +{ +const unsigned char librvng_utf8_skip_data[256] + = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1 }; + +static const char* librvng_utf8_next_char(const char* p) +{ + return p + librvng_utf8_skip_data[*reinterpret_cast(p)]; +} + +static void unescapeXML(const char* s, const unsigned long sz, librevenge::RVNGString& res) +{ + const char* p = s; + const char* const end = p + sz; + while (p != end) + { + const char* const next = librvng_utf8_next_char(p); + if (next > end) + { + // oops, the string is invalid + break; + } + if (p + 4 <= end && p + 1 == next && *p == '&') + { + // look for & , < , > , ' , " + bool escapedChar = false; + switch (*(p + 1)) + { + case 'a': + if (p + 5 <= end && strncmp(p, "&", 5) == 0) + { + res.append('&'); + p += 5; + escapedChar = true; + } + else if (p + 6 <= end && strncmp(p, "'", 6) == 0) + { + res.append('\''); + p += 6; + escapedChar = true; + } + break; + case 'g': + if (strncmp(p, ">", 4) == 0) + { + res.append('>'); + p += 4; + escapedChar = true; + } + break; + case 'l': + if (strncmp(p, "<", 4) == 0) + { + res.append('<'); + p += 4; + escapedChar = true; + } + break; + case 'q': + if (p + 6 <= end && strncmp(p, """, 6) == 0) + { + res.append('"'); + p += 6; + escapedChar = true; + } + break; + default: + break; + } + if (escapedChar) + continue; + } + + while (p != next) + { + res.append(*p); + ++p; + } + p = next; + } +} + +using com::sun::star::uno::Reference; +using com::sun::star::xml::sax::XAttributeList; +using com::sun::star::xml::sax::XDocumentHandler; + +DocumentHandler::DocumentHandler(Reference const& xHandler) + : mxHandler(xHandler) +{ + if (SvXMLImport* pFastHandler = dynamic_cast(mxHandler.get())) + mxHandler.set(new SvXMLLegacyToFastDocHandler(pFastHandler)); +} + +void DocumentHandler::startDocument() { mxHandler->startDocument(); } + +void DocumentHandler::endDocument() { mxHandler->endDocument(); } + +void DocumentHandler::startElement(const char* psName, + const librevenge::RVNGPropertyList& xPropList) +{ + rtl::Reference pAttrList = new SvXMLAttributeList(); + librevenge::RVNGPropertyList::Iter i(xPropList); + for (i.rewind(); i.next();) + { + // filter out librevenge elements + if (strncmp(i.key(), "librevenge", 10) != 0) + { + size_t keyLength = strlen(i.key()); + OUString sName(i.key(), keyLength, RTL_TEXTENCODING_UTF8); + OUString sValue(i()->getStr().cstr(), i()->getStr().len(), RTL_TEXTENCODING_UTF8); + + // libodfgen xml-encodes some attribute's value, so check if the value is encoded or not + for (int j = 0; j < 9; ++j) + { + // list of the encoded attributes followed by their lengths + static char const* listEncoded[9] + = { "draw:name", "svg:font-family", "style:condition", + "style:num-prefix", "style:num-suffix", "table:formula", + "text:bullet-char", "text:label", "xlink:href" }; + static size_t const listEncodedLength[9] = { 9, 15, 15, 16, 16, 13, 16, 10, 10 }; + if (keyLength == listEncodedLength[j] + && strncmp(i.key(), listEncoded[j], keyLength) == 0) + { + librevenge::RVNGString decodedValue(""); + unescapeXML(i()->getStr().cstr(), + static_cast(i()->getStr().len()), decodedValue); + sValue + = OUString(decodedValue.cstr(), decodedValue.len(), RTL_TEXTENCODING_UTF8); + break; + } + } + pAttrList->AddAttribute(sName, sValue); + } + } + + OUString sElementName(psName, strlen(psName), RTL_TEXTENCODING_UTF8); + mxHandler->startElement(sElementName, pAttrList); +} + +void DocumentHandler::endElement(const char* psName) +{ + OUString sElementName(psName, strlen(psName), RTL_TEXTENCODING_UTF8); + mxHandler->endElement(sElementName); +} + +void DocumentHandler::characters(const librevenge::RVNGString& sCharacters) +{ + OUString sCharU16(sCharacters.cstr(), strlen(sCharacters.cstr()), RTL_TEXTENCODING_UTF8); + mxHandler->characters(sCharU16); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/common/WPFTEncodingDialog.cxx b/writerperfect/source/common/WPFTEncodingDialog.cxx new file mode 100644 index 000000000..b0c955481 --- /dev/null +++ b/writerperfect/source/common/WPFTEncodingDialog.cxx @@ -0,0 +1,122 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include + +#include +#include +#include + +#include + +namespace writerperfect +{ +namespace +{ +std::pair const s_encodings[] + = { { u"MacArabic", u"Arabic (Apple Macintosh)" }, + { u"CP864", u"Arabic (DOS/OS2-864)" }, + { u"CP1006", u"Arabic (IBM-1006)" }, + { u"CP1256", u"Arabic (Windows-1256)" }, + { u"CP775", u"Baltic (DOS/OS2-775)" }, + { u"CP1257", u"Baltic (Windows-1257)" }, + { u"MacCeltic", u"Celtic (Apple Macintosh)" }, + { u"MacCyrillic", u"Cyrillic (Apple Macintosh)" }, + { u"CP855", u"Cyrillic (DOS/OS2-855)" }, + { u"CP866", u"Cyrillic (DOS/OS2-866/Russian)" }, + { u"CP1251", u"Cyrillic (Windows-1251)" }, + { u"MacCEurope", u"Eastern Europe (Apple Macintosh)" }, + { u"MacCroatian", u"Eastern Europe (Apple Macintosh/Croatian)" }, + { u"MacRomanian", u"Eastern Europe (Apple Macintosh/Romanian)" }, + { u"CP852", u"Eastern Europe (DOS/OS2-852)" }, + { u"CP1250", u"Eastern Europe (Windows-1250/WinLatin 2)" }, + { u"MacGreek", u"Greek (Apple Macintosh)" }, + { u"CP737", u"Greek (DOS/OS2-737)" }, + { u"CP869", u"Greek (DOS/OS2-869/Greek-2)" }, + { u"CP875", u"Greek (DOS/OS2-875)" }, + { u"CP1253", u"Greek (Windows-1253)" }, + { u"MacHebrew", u"Hebrew (Apple Macintosh)" }, + { u"CP424", u"Hebrew (DOS/OS2-424)" }, + { u"CP856", u"Hebrew (DOS/OS2-856)" }, + { u"CP862", u"Hebrew (DOS/OS2-862)" }, + { u"CP1255", u"Hebrew (Windows-1255)" }, + { u"CP500", u"International (DOS/OS2-500)" }, + { u"CP932", u"Japanese (Windows-932)" }, + { u"MacThai", u"Thai (Apple Macintosh)" }, + { u"CP874", u"Thai (DOS/OS2-874)" }, + { u"CP950", u"Traditional Chinese (Windows-950)" }, + { u"MacTurkish", u"Turkish (Apple Macintosh)" }, + { u"CP857", u"Turkish (DOS/OS2-857)" }, + { u"CP1026", u"Turkish (DOS/OS2-1026)" }, + { u"CP1254", u"Turkish (Windows-1254)" }, + { u"CP1258", u"Vietnamese (Windows-1258)" }, + { u"MacRoman", u"Western Europe (Apple Macintosh)" }, + { u"MacIceland", u"Western Europe (Apple Macintosh/Icelandic)" }, + { u"CP037", u"Western Europe (DOS/OS2-037/US-Canada)" }, + { u"CP437", u"Western Europe (DOS/OS2-437/US)" }, + { u"CP850", u"Western Europe (DOS/OS2-850)" }, + { u"CP860", u"Western Europe (DOS/OS2-860/Portuguese)" }, + { u"CP861", u"Western Europe (DOS/OS2-861/Icelandic)" }, + { u"CP863", u"Western Europe (DOS/OS2-863/French)" }, + { u"CP865", u"Western Europe (DOS/OS2-865/Nordic)" }, + { u"CP1252", u"Western Europe (Windows-1252/WinLatin 1)" } }; + +std::size_t const numEncodings = SAL_N_ELEMENTS(s_encodings); + +void insertEncodings(weld::ComboBox& box) +{ + for (std::size_t i = 0; i < numEncodings; ++i) + box.append(OUString(s_encodings[i].first), OUString(s_encodings[i].second)); +} + +void selectEncoding(weld::ComboBox& box, const OUString& encoding) { box.set_active_id(encoding); } + +OUString getEncoding(const weld::ComboBox& box) { return box.get_active_id(); } +} + +WPFTEncodingDialog::WPFTEncodingDialog(weld::Window* pParent, const OUString& title, + const OUString& encoding) + : GenericDialogController(pParent, "writerperfect/ui/wpftencodingdialog.ui", + "WPFTEncodingDialog") + , m_userHasCancelled(false) + , m_xLbCharset(m_xBuilder->weld_combo_box("comboboxtext")) + , m_xBtnOk(m_xBuilder->weld_button("ok")) + , m_xBtnCancel(m_xBuilder->weld_button("cancel")) +{ + m_xBtnCancel->connect_clicked(LINK(this, WPFTEncodingDialog, CancelHdl)); + + insertEncodings(*m_xLbCharset); + m_xLbCharset->make_sorted(); + selectEncoding(*m_xLbCharset, encoding); + + m_xDialog->set_title(title); +} + +WPFTEncodingDialog::~WPFTEncodingDialog() {} + +OUString WPFTEncodingDialog::GetEncoding() const { return getEncoding(*m_xLbCharset); } + +IMPL_LINK_NOARG(WPFTEncodingDialog, CancelHdl, weld::Button&, void) +{ + m_userHasCancelled = true; + m_xDialog->response(RET_CANCEL); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/common/WPXSvInputStream.cxx b/writerperfect/source/common/WPXSvInputStream.cxx new file mode 100644 index 000000000..3364b0509 --- /dev/null +++ b/writerperfect/source/common/WPXSvInputStream.cxx @@ -0,0 +1,960 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace writerperfect +{ +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::io; + +namespace container = com::sun::star::container; +namespace packages = com::sun::star::packages; + +namespace +{ +class PositionHolder +{ +public: + explicit PositionHolder(const Reference& rxSeekable); + ~PositionHolder(); + PositionHolder(const PositionHolder&) = delete; + PositionHolder& operator=(const PositionHolder&) = delete; + +private: + const Reference mxSeekable; + const sal_uInt64 mnPosition; +}; + +PositionHolder::PositionHolder(const Reference& rxSeekable) + : mxSeekable(rxSeekable) + , mnPosition(rxSeekable->getPosition()) +{ +} + +PositionHolder::~PositionHolder() +{ + try + { + mxSeekable->seek(mnPosition); + } + catch (...) + { + } +} + +} // anonymous namespace + +namespace +{ +OUString lcl_normalizeSubStreamPath(const OUString& rPath) +{ + // accept paths which begin by '/' + // TODO: maybe this should do a full normalization + if (rPath.startsWith("/") && rPath.getLength() >= 2) + return rPath.copy(1); + return rPath; +} +} + +namespace +{ +OUString concatPath(std::u16string_view lhs, const OUString& rhs) +{ + if (lhs.empty()) + return rhs; + return OUString::Concat(lhs) + "/" + rhs; +} + +struct OLEStreamData +{ + OLEStreamData(const OString& rName, const OString& rvngName); + + tools::SvRef stream; + + /** Name of the stream. + * + * This is not @c OUString, because we need to be able to + * produce const char* from it. + */ + OString name; + /** librevenge name of the stream. + * + * This is not @c OUString, because we need to be able to + * produce const char* from it. + */ + OString RVNGname; +}; + +typedef std::unordered_map NameMap_t; +typedef std::unordered_map> OLEStorageMap_t; + +/** Representation of an OLE2 storage. + * + * This class tries to bring a bit of sanity to use of SotStorage with + * respect to the needs of @c librevenge::RVNGInputStream API. It + * holds all nested storages for the whole lifetime (more precisely, + * since initialization, which is performed by calling @c + * initialize()), thus ensuring that no created stream is destroyed + * just because its parent storage went out of scope. It also holds a + * bidirectional map of stream names to their indexes (index of a + * stream is determined by deep-first traversal), which is also + * populated during initialization (member variables @c maStreams and + * @c maNameMap). + * + * Streams are created on demand (and saved, for the same reason as + * storages). + */ +struct OLEStorageImpl +{ + OLEStorageImpl(); + + void initialize(std::unique_ptr pStream); + + tools::SvRef getStream(const OUString& rPath); + tools::SvRef const& getStream(std::size_t nId); + +private: + void traverse(const tools::SvRef& rStorage, std::u16string_view rPath); + + tools::SvRef createStream(const OUString& rPath); + +public: + tools::SvRef mxRootStorage; //< root storage of the OLE2 + OLEStorageMap_t maStorageMap; //< map of all sub storages by name + ::std::vector maStreams; //< list of streams and their names + NameMap_t maNameMap; //< map of stream names to indexes (into @c maStreams) + bool mbInitialized; +}; + +OLEStreamData::OLEStreamData(const OString& rName, const OString& rvngName) + : name(rName) + , RVNGname(rvngName) +{ +} + +OLEStorageImpl::OLEStorageImpl() + : mbInitialized(false) +{ +} + +void OLEStorageImpl::initialize(std::unique_ptr pStream) +{ + if (!pStream) + return; + + mxRootStorage = new SotStorage(pStream.release(), true); + + traverse(mxRootStorage, u""); + + mbInitialized = true; +} + +tools::SvRef OLEStorageImpl::getStream(const OUString& rPath) +{ + const OUString aPath(lcl_normalizeSubStreamPath(rPath)); + NameMap_t::iterator aIt = maNameMap.find(aPath); + + // For the while don't return stream in this situation. + // Later, given how libcdr's zip stream implementation behaves, + // return the first stream in the storage if there is one. + if (maNameMap.end() == aIt) + return tools::SvRef(); + + if (!maStreams[aIt->second].stream.is()) + maStreams[aIt->second].stream + = createStream(OStringToOUString(maStreams[aIt->second].name, RTL_TEXTENCODING_UTF8)); + + return maStreams[aIt->second].stream; +} + +tools::SvRef const& OLEStorageImpl::getStream(const std::size_t nId) +{ + if (!maStreams[nId].stream.is()) + maStreams[nId].stream + = createStream(OStringToOUString(maStreams[nId].name, RTL_TEXTENCODING_UTF8)); + + return maStreams[nId].stream; +} + +void OLEStorageImpl::traverse(const tools::SvRef& rStorage, std::u16string_view rPath) +{ + SvStorageInfoList infos; + + rStorage->FillInfoList(&infos); + + for (const auto& info : infos) + { + if (info.IsStream()) + { + OUString baseName = info.GetName(), rvngName = baseName; + // librevenge::RVNGOLEStream ignores the first character when is a control code, so ... + if (!rvngName.isEmpty() && rvngName.toChar() < 32) + rvngName = rvngName.copy(1); + maStreams.emplace_back( + OUStringToOString(concatPath(rPath, baseName), RTL_TEXTENCODING_UTF8), + OUStringToOString(concatPath(rPath, rvngName), RTL_TEXTENCODING_UTF8)); + maNameMap[concatPath(rPath, rvngName)] = maStreams.size() - 1; + } + else if (info.IsStorage()) + { + const OUString aPath = concatPath(rPath, info.GetName()); + tools::SvRef aStorage + = rStorage->OpenSotStorage(info.GetName(), StreamMode::STD_READ); + maStorageMap[aPath] = aStorage; + + // deep-first traversal + traverse(aStorage, aPath); + } + else + { + SAL_WARN("writerperfect", + "OLEStorageImpl::traverse: invalid storage entry, neither stream nor file"); + } + } +} + +tools::SvRef OLEStorageImpl::createStream(const OUString& rPath) +{ + const sal_Int32 nDelim = rPath.lastIndexOf(u'/'); + + if (-1 == nDelim) + return mxRootStorage->OpenSotStream(rPath, StreamMode::STD_READ); + + const OUString aDir = rPath.copy(0, nDelim); + const OUString aName = rPath.copy(nDelim + 1); + + const OLEStorageMap_t::const_iterator aIt = maStorageMap.find(aDir); + + if (maStorageMap.end() == aIt) + return nullptr; + + return aIt->second->OpenSotStream(aName, StreamMode::STD_READ); +} +} + +namespace +{ +struct ZipStreamData +{ + explicit ZipStreamData(const OString& rName); + + Reference xStream; + + /** Name of the stream. + * + * This is not @c OUString, because we need to be able to + * produce const char* from it. + */ + OString aName; +}; + +/** Representation of a Zip storage. + * + * This is quite similar to OLEStorageImpl, except that we do not need + * to keep all storages (folders) open. + */ +struct ZipStorageImpl +{ + explicit ZipStorageImpl(const Reference& rxContainer); + + /** Initialize for access. + * + * This creates a bidirectional map of stream names to their + * indexes (index of a stream is determined by deep-first + * traversal). + */ + void initialize(); + + Reference getStream(const OUString& rPath); + Reference const& getStream(std::size_t nId); + +private: + void traverse(const Reference& rxEnum); + + Reference createStream(const OUString& rPath); + +public: + Reference mxContainer; //< root of the Zip + ::std::vector maStreams; //< list of streams and their names + NameMap_t maNameMap; //< map of stream names to indexes (into @c maStreams) + bool mbInitialized; +}; + +ZipStreamData::ZipStreamData(const OString& rName) + : aName(rName) +{ +} + +ZipStorageImpl::ZipStorageImpl(const Reference& rxContainer) + : mxContainer(rxContainer) + , mbInitialized(false) +{ + assert(mxContainer.is()); +} + +void ZipStorageImpl::initialize() +{ + traverse(mxContainer); + + mbInitialized = true; +} + +Reference ZipStorageImpl::getStream(const OUString& rPath) +{ + const OUString aPath(lcl_normalizeSubStreamPath(rPath)); + NameMap_t::iterator aIt = maNameMap.find(aPath); + + // For the while don't return stream in this situation. + // Later, given how libcdr's zip stream implementation behaves, + // return the first stream in the storage if there is one. + if (maNameMap.end() == aIt) + return Reference(); + + if (!maStreams[aIt->second].xStream.is()) + maStreams[aIt->second].xStream = createStream(aPath); + + return maStreams[aIt->second].xStream; +} + +Reference const& ZipStorageImpl::getStream(const std::size_t nId) +{ + if (!maStreams[nId].xStream.is()) + maStreams[nId].xStream + = createStream(OStringToOUString(maStreams[nId].aName, RTL_TEXTENCODING_UTF8)); + + return maStreams[nId].xStream; +} + +void ZipStorageImpl::traverse(const Reference& rxContainer) +{ + const Sequence lNames = rxContainer->getElementNames(); + + maStreams.reserve(lNames.getLength()); + + for (const auto& rName : lNames) + { + if (!rName.endsWith("/")) // skip dirs + { + maStreams.emplace_back(OUStringToOString(rName, RTL_TEXTENCODING_UTF8)); + maNameMap[rName] = maStreams.size() - 1; + } + } +} + +Reference ZipStorageImpl::createStream(const OUString& rPath) +{ + Reference xStream; + + try + { + const Reference xInputStream(mxContainer->getByName(rPath), UNO_QUERY_THROW); + const Reference xSeekable(xInputStream, UNO_QUERY); + + if (xSeekable.is()) + xStream = xInputStream; + else + xStream.set(new comphelper::OSeekableInputWrapper( + xInputStream, comphelper::getProcessComponentContext())); + } + catch (const Exception&) + { + // nothing needed + } + + return xStream; +} +} + +class WPXSvInputStreamImpl +{ +public: + explicit WPXSvInputStreamImpl(css::uno::Reference const& xStream); + + bool isStructured(); + unsigned subStreamCount(); + const char* subStreamName(unsigned id); + bool existsSubStream(const char* name); + librevenge::RVNGInputStream* getSubStreamByName(const char* name); + librevenge::RVNGInputStream* getSubStreamById(unsigned id); + + const unsigned char* read(unsigned long numBytes, unsigned long& numBytesRead); + int seek(tools::Long offset); + tools::Long tell(); + bool isEnd(); + + void invalidateReadBuffer(); + +private: + bool isOLE(); + void ensureOLEIsInitialized(); + + bool isZip(); + void ensureZipIsInitialized(); + + static librevenge::RVNGInputStream* + createWPXStream(const tools::SvRef& rxStorage); + static librevenge::RVNGInputStream* createWPXStream(const Reference& rxStream); + +private: + css::uno::Reference mxStream; + css::uno::Reference mxSeekable; + css::uno::Sequence maData; + std::unique_ptr mpOLEStorage; + std::unique_ptr mpZipStorage; + bool mbCheckedOLE; + bool mbCheckedZip; + +public: + sal_Int64 mnLength; + const unsigned char* mpReadBuffer; + unsigned long mnReadBufferLength; + unsigned long mnReadBufferPos; +}; + +WPXSvInputStreamImpl::WPXSvInputStreamImpl(Reference const& xStream) + : mxStream(xStream) + , mxSeekable(xStream, UNO_QUERY) + , maData(0) + , mbCheckedOLE(false) + , mbCheckedZip(false) + , mnLength(0) + , mpReadBuffer(nullptr) + , mnReadBufferLength(0) + , mnReadBufferPos(0) +{ + if (!xStream.is() || !mxStream.is()) + mnLength = 0; + else + { + if (!mxSeekable.is()) + mnLength = 0; + else + { + try + { + mnLength = mxSeekable->getLength(); + if (0 < mxSeekable->getPosition()) + mxSeekable->seek(0); + } + catch (...) + { + SAL_WARN("writerperfect", "mnLength = mxSeekable->getLength() threw exception"); + mnLength = 0; + } + } + } +} + +const unsigned char* WPXSvInputStreamImpl::read(unsigned long numBytes, unsigned long& numBytesRead) +{ + numBytesRead = 0; + + if (numBytes == 0 || isEnd()) + return nullptr; + + numBytesRead = mxStream->readSomeBytes(maData, numBytes); + if (numBytesRead == 0) + return nullptr; + + return reinterpret_cast(maData.getConstArray()); +} + +tools::Long WPXSvInputStreamImpl::tell() +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return -1; + else + { + const sal_Int64 tmpPosition = mxSeekable->getPosition(); + if ((tmpPosition < 0) || (tmpPosition > LONG_MAX)) + return -1; + return static_cast(tmpPosition); + } +} + +int WPXSvInputStreamImpl::seek(tools::Long offset) +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return -1; + + const sal_Int64 tmpPosition = mxSeekable->getPosition(); + if ((tmpPosition < 0) || (tmpPosition > LONG_MAX)) + return -1; + + try + { + mxSeekable->seek(offset); + return 0; + } + catch (...) + { + SAL_WARN("writerperfect", "mxSeekable->seek(offset) threw exception"); + return -1; + } +} + +bool WPXSvInputStreamImpl::isEnd() +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return true; + return (mxSeekable->getPosition() >= mnLength); +} + +bool WPXSvInputStreamImpl::isStructured() +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return false; + + PositionHolder pos(mxSeekable); + mxSeekable->seek(0); + + if (isOLE()) + return true; + + mxSeekable->seek(0); + + return isZip(); +} + +unsigned WPXSvInputStreamImpl::subStreamCount() +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return 0; + + PositionHolder pos(mxSeekable); + mxSeekable->seek(0); + + if (isOLE()) + { + ensureOLEIsInitialized(); + + return mpOLEStorage->maStreams.size(); + } + + mxSeekable->seek(0); + + if (isZip()) + { + ensureZipIsInitialized(); + + return mpZipStorage->maStreams.size(); + } + + return 0; +} + +const char* WPXSvInputStreamImpl::subStreamName(const unsigned id) +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return nullptr; + + PositionHolder pos(mxSeekable); + mxSeekable->seek(0); + + if (isOLE()) + { + ensureOLEIsInitialized(); + + if (mpOLEStorage->maStreams.size() <= id) + return nullptr; + + return mpOLEStorage->maStreams[id].RVNGname.getStr(); + } + + mxSeekable->seek(0); + + if (isZip()) + { + ensureZipIsInitialized(); + + if (mpZipStorage->maStreams.size() <= id) + return nullptr; + + return mpZipStorage->maStreams[id].aName.getStr(); + } + + return nullptr; +} + +bool WPXSvInputStreamImpl::existsSubStream(const char* const name) +{ + if (!name) + return false; + + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return false; + + PositionHolder pos(mxSeekable); + mxSeekable->seek(0); + + const OUString aName(OStringToOUString(std::string_view(name), RTL_TEXTENCODING_UTF8)); + + if (isOLE()) + { + ensureOLEIsInitialized(); + return mpOLEStorage->maNameMap.end() != mpOLEStorage->maNameMap.find(aName); + } + + mxSeekable->seek(0); + + if (isZip()) + { + ensureZipIsInitialized(); + return mpZipStorage->maNameMap.end() != mpZipStorage->maNameMap.find(aName); + } + + return false; +} + +librevenge::RVNGInputStream* WPXSvInputStreamImpl::getSubStreamByName(const char* const name) +{ + if (!name) + return nullptr; + + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return nullptr; + + PositionHolder pos(mxSeekable); + mxSeekable->seek(0); + + const OUString aName(OStringToOUString(std::string_view(name), RTL_TEXTENCODING_UTF8)); + + if (isOLE()) + { + ensureOLEIsInitialized(); + return createWPXStream(mpOLEStorage->getStream(aName)); + } + + mxSeekable->seek(0); + + if (isZip()) + { + ensureZipIsInitialized(); + + try + { + return createWPXStream(mpZipStorage->getStream(aName)); + } + catch (const Exception&) + { + // nothing needed + } + } + + return nullptr; +} + +librevenge::RVNGInputStream* WPXSvInputStreamImpl::getSubStreamById(const unsigned id) +{ + if ((mnLength == 0) || !mxStream.is() || !mxSeekable.is()) + return nullptr; + + PositionHolder pos(mxSeekable); + mxSeekable->seek(0); + + if (isOLE()) + { + ensureOLEIsInitialized(); + + if (mpOLEStorage->maStreams.size() <= id) + return nullptr; + + return createWPXStream(mpOLEStorage->getStream(id)); + } + + mxSeekable->seek(0); + + if (isZip()) + { + ensureZipIsInitialized(); + + if (mpZipStorage->maStreams.size() <= id) + return nullptr; + + try + { + return createWPXStream(mpZipStorage->getStream(id)); + } + catch (const Exception&) + { + // nothing needed + } + } + return nullptr; +} + +void WPXSvInputStreamImpl::invalidateReadBuffer() +{ + if (mpReadBuffer) + { + seek(tell() + static_cast(mnReadBufferPos) + - static_cast(mnReadBufferLength)); + mpReadBuffer = nullptr; + mnReadBufferPos = 0; + mnReadBufferLength = 0; + } +} + +librevenge::RVNGInputStream* +WPXSvInputStreamImpl::createWPXStream(const tools::SvRef& rxStorage) +{ + if (rxStorage.is()) + { + Reference xContents(new utl::OSeekableInputStreamWrapper(rxStorage.get())); + return new WPXSvInputStream(xContents); + } + return nullptr; +} + +librevenge::RVNGInputStream* +WPXSvInputStreamImpl::createWPXStream(const Reference& rxStream) +{ + if (rxStream.is()) + return new WPXSvInputStream(rxStream); + else + return nullptr; +} + +bool WPXSvInputStreamImpl::isOLE() +{ + if (!mbCheckedOLE) + { + assert(0 == mxSeekable->getPosition()); + + std::unique_ptr pStream(utl::UcbStreamHelper::CreateStream(mxStream)); + if (pStream && SotStorage::IsOLEStorage(pStream.get())) + mpOLEStorage.reset(new OLEStorageImpl()); + + mbCheckedOLE = true; + } + + return bool(mpOLEStorage); +} + +bool WPXSvInputStreamImpl::isZip() +{ + if (!mbCheckedZip) + { + assert(0 == mxSeekable->getPosition()); + + try + { + const Reference xContext(comphelper::getProcessComponentContext(), + UNO_SET_THROW); + const Reference xZip( + xContext->getServiceManager()->createInstanceWithArgumentsAndContext( + "com.sun.star.packages.zip.ZipFileAccess", { Any(mxStream) }, xContext), + UNO_QUERY_THROW); + mpZipStorage.reset(new ZipStorageImpl(xZip)); + } + catch (const Exception&) + { + // ignore + } + + mbCheckedZip = true; + } + + return bool(mpZipStorage); +} + +void WPXSvInputStreamImpl::ensureOLEIsInitialized() +{ + assert(mpOLEStorage); + + if (!mpOLEStorage->mbInitialized) + mpOLEStorage->initialize(utl::UcbStreamHelper::CreateStream(mxStream)); +} + +void WPXSvInputStreamImpl::ensureZipIsInitialized() +{ + assert(mpZipStorage); + + if (!mpZipStorage->mbInitialized) + mpZipStorage->initialize(); +} + +WPXSvInputStream::WPXSvInputStream(Reference const& xStream) + : mpImpl(new WPXSvInputStreamImpl(xStream)) +{ +} + +WPXSvInputStream::~WPXSvInputStream() {} + +#define BUFFER_MAX 65536 + +const unsigned char* WPXSvInputStream::read(unsigned long numBytes, unsigned long& numBytesRead) +{ + numBytesRead = 0; + + if (numBytes == 0 || numBytes > std::numeric_limits::max() / 2) + return nullptr; + + if (mpImpl->mpReadBuffer) + { + if ((mpImpl->mnReadBufferPos + numBytes > mpImpl->mnReadBufferPos) + && (mpImpl->mnReadBufferPos + numBytes <= mpImpl->mnReadBufferLength)) + { + const unsigned char* pTmp = mpImpl->mpReadBuffer + mpImpl->mnReadBufferPos; + mpImpl->mnReadBufferPos += numBytes; + numBytesRead = numBytes; + return pTmp; + } + + mpImpl->invalidateReadBuffer(); + } + + unsigned long curpos = static_cast(mpImpl->tell()); + if (curpos == static_cast(-1)) // returned ERROR + return nullptr; + + if ((curpos + numBytes < curpos) /*overflow*/ + || (curpos + numBytes + >= o3tl::make_unsigned(mpImpl->mnLength))) /*reading more than available*/ + { + numBytes = mpImpl->mnLength - curpos; + } + + if (numBytes < BUFFER_MAX) + { + if (BUFFER_MAX < mpImpl->mnLength - curpos) + mpImpl->mnReadBufferLength = BUFFER_MAX; + else /* BUFFER_MAX >= mpImpl->mnLength - curpos */ + mpImpl->mnReadBufferLength = mpImpl->mnLength - curpos; + } + else + mpImpl->mnReadBufferLength = numBytes; + + unsigned long tmpNumBytes(0); + mpImpl->mpReadBuffer = mpImpl->read(mpImpl->mnReadBufferLength, tmpNumBytes); + if (tmpNumBytes != mpImpl->mnReadBufferLength) + mpImpl->mnReadBufferLength = tmpNumBytes; + + mpImpl->mnReadBufferPos = 0; + if (!mpImpl->mnReadBufferLength) + return nullptr; + + if (numBytes <= mpImpl->mnReadBufferLength) + numBytesRead = numBytes; + else + numBytesRead = mpImpl->mnReadBufferLength; + + mpImpl->mnReadBufferPos += numBytesRead; + return mpImpl->mpReadBuffer; +} + +long WPXSvInputStream::tell() +{ + tools::Long retVal = mpImpl->tell(); + return retVal - static_cast(mpImpl->mnReadBufferLength) + + static_cast(mpImpl->mnReadBufferPos); +} + +int WPXSvInputStream::seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) +{ + sal_Int64 tmpOffset = offset; + if (seekType == librevenge::RVNG_SEEK_CUR) + tmpOffset += tell(); + if (seekType == librevenge::RVNG_SEEK_END) + tmpOffset += mpImpl->mnLength; + + int retVal = 0; + if (tmpOffset < 0) + { + tmpOffset = 0; + retVal = -1; + } + if (tmpOffset > mpImpl->mnLength) + { + tmpOffset = mpImpl->mnLength; + retVal = -1; + } + + if (tmpOffset < mpImpl->tell() + && o3tl::make_unsigned(tmpOffset) + >= static_cast(mpImpl->tell()) - mpImpl->mnReadBufferLength) + { + mpImpl->mnReadBufferPos = static_cast( + tmpOffset + static_cast(mpImpl->mnReadBufferLength) - mpImpl->tell()); + return retVal; + } + + mpImpl->invalidateReadBuffer(); + + if (mpImpl->seek(tmpOffset)) + return -1; + return retVal; +} + +bool WPXSvInputStream::isEnd() +{ + return mpImpl->isEnd() && mpImpl->mnReadBufferPos == mpImpl->mnReadBufferLength; +} + +bool WPXSvInputStream::isStructured() +{ + mpImpl->invalidateReadBuffer(); + return mpImpl->isStructured(); +} + +unsigned WPXSvInputStream::subStreamCount() +{ + mpImpl->invalidateReadBuffer(); + return mpImpl->subStreamCount(); +} + +const char* WPXSvInputStream::subStreamName(const unsigned id) +{ + mpImpl->invalidateReadBuffer(); + return mpImpl->subStreamName(id); +} + +bool WPXSvInputStream::existsSubStream(const char* const name) +{ + mpImpl->invalidateReadBuffer(); + return mpImpl->existsSubStream(name); +} + +librevenge::RVNGInputStream* WPXSvInputStream::getSubStreamByName(const char* name) +{ + mpImpl->invalidateReadBuffer(); + return mpImpl->getSubStreamByName(name); +} + +librevenge::RVNGInputStream* WPXSvInputStream::getSubStreamById(const unsigned id) +{ + mpImpl->invalidateReadBuffer(); + return mpImpl->getSubStreamById(id); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/CDRImportFilter.cxx b/writerperfect/source/draw/CDRImportFilter.cxx new file mode 100644 index 000000000..34b490326 --- /dev/null +++ b/writerperfect/source/draw/CDRImportFilter.cxx @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* CDRImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ + +#include + +#include + +#include "CDRImportFilter.hxx" + +bool CDRImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libcdr::CDRDocument::parse(&rInput, &rGenerator); +} + +bool CDRImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libcdr::CDRDocument::isSupported(&rInput)) + { + rTypeName = "draw_CorelDraw_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL CDRImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.CDRImportFilter"; +} + +sal_Bool SAL_CALL CDRImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL CDRImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_CDRImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new CDRImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/CDRImportFilter.hxx b/writerperfect/source/draw/CDRImportFilter.hxx new file mode 100644 index 000000000..0e8247131 --- /dev/null +++ b/writerperfect/source/draw/CDRImportFilter.hxx @@ -0,0 +1,39 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class CDRImportFilter : public writerperfect::ImportFilter +{ +public: + explicit CDRImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/CMXImportFilter.cxx b/writerperfect/source/draw/CMXImportFilter.cxx new file mode 100644 index 000000000..23aab816a --- /dev/null +++ b/writerperfect/source/draw/CMXImportFilter.cxx @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* CMXImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ + +#include + +#include + +#include "CMXImportFilter.hxx" + +bool CMXImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libcdr::CMXDocument::parse(&rInput, &rGenerator); +} + +bool CMXImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libcdr::CMXDocument::isSupported(&rInput)) + { + rTypeName = "draw_Corel_Presentation_Exchange"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL CMXImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.CMXImportFilter"; +} + +sal_Bool SAL_CALL CMXImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL CMXImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_CMXImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new CMXImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/CMXImportFilter.hxx b/writerperfect/source/draw/CMXImportFilter.hxx new file mode 100644 index 000000000..cc3b19428 --- /dev/null +++ b/writerperfect/source/draw/CMXImportFilter.hxx @@ -0,0 +1,39 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class CMXImportFilter : public writerperfect::ImportFilter +{ +public: + explicit CMXImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/FreehandImportFilter.cxx b/writerperfect/source/draw/FreehandImportFilter.cxx new file mode 100644 index 000000000..68dd7b56b --- /dev/null +++ b/writerperfect/source/draw/FreehandImportFilter.cxx @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* FreehandImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "FreehandImportFilter.hxx" + +bool FreehandImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libfreehand::FreeHandDocument::parse(&rInput, &rGenerator); +} + +bool FreehandImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libfreehand::FreeHandDocument::isSupported(&rInput)) + { + rTypeName = "draw_Freehand_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL FreehandImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.FreehandImportFilter"; +} + +sal_Bool SAL_CALL FreehandImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL FreehandImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_FreehandImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new FreehandImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/FreehandImportFilter.hxx b/writerperfect/source/draw/FreehandImportFilter.hxx new file mode 100644 index 000000000..083218117 --- /dev/null +++ b/writerperfect/source/draw/FreehandImportFilter.hxx @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class FreehandImportFilter : public writerperfect::ImportFilter +{ +public: + explicit FreehandImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/MSPUBImportFilter.cxx b/writerperfect/source/draw/MSPUBImportFilter.cxx new file mode 100644 index 000000000..ba34cd2f1 --- /dev/null +++ b/writerperfect/source/draw/MSPUBImportFilter.cxx @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MSPUBImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "MSPUBImportFilter.hxx" + +bool MSPUBImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libmspub::MSPUBDocument::parse(&rInput, &rGenerator); +} + +bool MSPUBImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libmspub::MSPUBDocument::isSupported(&rInput)) + { + rTypeName = "draw_Publisher_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL MSPUBImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.MSPUBImportFilter"; +} + +sal_Bool SAL_CALL MSPUBImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL MSPUBImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_MSPUBImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MSPUBImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/MSPUBImportFilter.hxx b/writerperfect/source/draw/MSPUBImportFilter.hxx new file mode 100644 index 000000000..a84302703 --- /dev/null +++ b/writerperfect/source/draw/MSPUBImportFilter.hxx @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MSPUBImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MSPUBImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/MWAWDrawImportFilter.cxx b/writerperfect/source/draw/MWAWDrawImportFilter.cxx new file mode 100644 index 000000000..000debdcb --- /dev/null +++ b/writerperfect/source/draw/MWAWDrawImportFilter.cxx @@ -0,0 +1,116 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MWAWDrawImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "MWAWDrawImportFilter.hxx" + +static bool handleEmbeddedMWAWGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedMWAWSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeSpreadsheet(data, &exporter); +} + +bool MWAWDrawImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return MWAWDocument::MWAW_R_OK == MWAWDocument::parse(&rInput, &rGenerator); +} + +bool MWAWDrawImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + rTypeName.clear(); + + MWAWDocument::Type docType = MWAWDocument::MWAW_T_UNKNOWN; + MWAWDocument::Kind docKind = MWAWDocument::MWAW_K_UNKNOWN; + const MWAWDocument::Confidence confidence + = MWAWDocument::isFileFormatSupported(&rInput, docType, docKind); + + if (confidence == MWAWDocument::MWAW_C_EXCELLENT) + { + switch (docKind) + { + case MWAWDocument::MWAW_K_DRAW: + switch (docType) + { + case MWAWDocument::MWAW_T_CLARISWORKS: + rTypeName = "draw_ClarisWorks"; + break; + default: + rTypeName = "MWAW_Drawing"; + break; + } + break; + case MWAWDocument::MWAW_K_PAINT: + switch (docType) + { + case MWAWDocument::MWAW_T_CLARISWORKS: + rTypeName = "draw_ClarisWorks"; + break; + default: + rTypeName = "MWAW_Bitmap"; + break; + } + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void MWAWDrawImportFilter::doRegisterHandlers(OdgGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/mwaw-ods", + &handleEmbeddedMWAWSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL MWAWDrawImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.MWAWDrawImportFilter"; +} + +sal_Bool SAL_CALL MWAWDrawImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL MWAWDrawImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_MWAWDrawImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MWAWDrawImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/MWAWDrawImportFilter.hxx b/writerperfect/source/draw/MWAWDrawImportFilter.hxx new file mode 100644 index 000000000..ed0571dad --- /dev/null +++ b/writerperfect/source/draw/MWAWDrawImportFilter.hxx @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MWAWDrawImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MWAWDrawImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdgGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/PageMakerImportFilter.cxx b/writerperfect/source/draw/PageMakerImportFilter.cxx new file mode 100644 index 000000000..5f5379de9 --- /dev/null +++ b/writerperfect/source/draw/PageMakerImportFilter.cxx @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* PageMakerImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "PageMakerImportFilter.hxx" + +bool PageMakerImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libpagemaker::PMDocument::parse(&rInput, &rGenerator); +} + +bool PageMakerImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libpagemaker::PMDocument::isSupported(&rInput)) + { + rTypeName = "draw_PageMaker_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL PageMakerImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Draw.PageMakerImportFilter"; +} + +sal_Bool SAL_CALL PageMakerImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL PageMakerImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Draw_PageMakerImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new PageMakerImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/PageMakerImportFilter.hxx b/writerperfect/source/draw/PageMakerImportFilter.hxx new file mode 100644 index 000000000..b98213a27 --- /dev/null +++ b/writerperfect/source/draw/PageMakerImportFilter.hxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class PageMakerImportFilter : public writerperfect::ImportFilter +{ +public: + explicit PageMakerImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/QXPImportFilter.cxx b/writerperfect/source/draw/QXPImportFilter.cxx new file mode 100644 index 000000000..c644ad470 --- /dev/null +++ b/writerperfect/source/draw/QXPImportFilter.cxx @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* QXPImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "QXPImportFilter.hxx" + +using com::sun::star::uno::Sequence; +using com::sun::star::uno::XComponentContext; +using com::sun::star::uno::XInterface; + +bool QXPImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libqxp::QXPDocument::parse(&rInput, &rGenerator) == libqxp::QXPDocument::RESULT_OK; +} + +bool QXPImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libqxp::QXPDocument::isSupported(&rInput)) + { + rTypeName = "draw_QXP_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL QXPImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Draw.QXPImportFilter"; +} + +sal_Bool SAL_CALL QXPImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +Sequence SAL_CALL QXPImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Draw_QXPImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new QXPImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/QXPImportFilter.hxx b/writerperfect/source/draw/QXPImportFilter.hxx new file mode 100644 index 000000000..5854125d6 --- /dev/null +++ b/writerperfect/source/draw/QXPImportFilter.hxx @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class QXPImportFilter : public writerperfect::ImportFilter +{ +public: + explicit QXPImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/StarOfficeDrawImportFilter.cxx b/writerperfect/source/draw/StarOfficeDrawImportFilter.cxx new file mode 100644 index 000000000..1c335bfc4 --- /dev/null +++ b/writerperfect/source/draw/StarOfficeDrawImportFilter.cxx @@ -0,0 +1,101 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "StarOfficeDrawImportFilter.hxx" + +using com::sun::star::uno::Sequence; +using com::sun::star::uno::XComponentContext; +using com::sun::star::uno::XInterface; + +static bool handleEmbeddedSTOFFGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedSTOFFSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.registerEmbeddedObjectHandler("image/stoff-odg", &handleEmbeddedSTOFFGraphicObject); + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeSpreadsheet(data, &exporter); +} + +bool StarOfficeDrawImportFilter::doImportDocument(weld::Window*, + librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return STOFFDocument::STOFF_R_OK == STOFFDocument::parse(&rInput, &rGenerator); +} + +bool StarOfficeDrawImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, + OUString& rTypeName) +{ + rTypeName.clear(); + + STOFFDocument::Kind docKind = STOFFDocument::STOFF_K_UNKNOWN; + const STOFFDocument::Confidence confidence + = STOFFDocument::isFileFormatSupported(&rInput, docKind); + + if (confidence == STOFFDocument::STOFF_C_EXCELLENT + || confidence == STOFFDocument::STOFF_C_SUPPORTED_ENCRYPTION) + { + switch (docKind) + { + case STOFFDocument::STOFF_K_DRAW: + rTypeName = "StarOffice_Drawing"; + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void StarOfficeDrawImportFilter::doRegisterHandlers(OdgGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/stoff-odg", &handleEmbeddedSTOFFGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/stoff-ods", + &handleEmbeddedSTOFFSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL StarOfficeDrawImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Draw.StarOfficeDrawImportFilter"; +} + +sal_Bool SAL_CALL StarOfficeDrawImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +Sequence SAL_CALL StarOfficeDrawImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Draw_StarOfficeDrawImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new StarOfficeDrawImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/StarOfficeDrawImportFilter.hxx b/writerperfect/source/draw/StarOfficeDrawImportFilter.hxx new file mode 100644 index 000000000..ca44ceb48 --- /dev/null +++ b/writerperfect/source/draw/StarOfficeDrawImportFilter.hxx @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class StarOfficeDrawImportFilter : public writerperfect::ImportFilter +{ +public: + explicit StarOfficeDrawImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdgGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/VisioImportFilter.cxx b/writerperfect/source/draw/VisioImportFilter.cxx new file mode 100644 index 000000000..33b23aae4 --- /dev/null +++ b/writerperfect/source/draw/VisioImportFilter.cxx @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* VisioImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "VisioImportFilter.hxx" + +bool VisioImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libvisio::VisioDocument::parse(&rInput, &rGenerator); +} + +bool VisioImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libvisio::VisioDocument::isSupported(&rInput)) + { + rTypeName = "draw_Visio_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL VisioImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.VisioImportFilter"; +} + +sal_Bool SAL_CALL VisioImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL VisioImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_VisioImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new VisioImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/VisioImportFilter.hxx b/writerperfect/source/draw/VisioImportFilter.hxx new file mode 100644 index 000000000..9d0e8cadb --- /dev/null +++ b/writerperfect/source/draw/VisioImportFilter.hxx @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class VisioImportFilter : public writerperfect::ImportFilter +{ +public: + explicit VisioImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/WPGImportFilter.cxx b/writerperfect/source/draw/WPGImportFilter.cxx new file mode 100644 index 000000000..10411ea3b --- /dev/null +++ b/writerperfect/source/draw/WPGImportFilter.cxx @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* WPGImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ + +#include + +#include + +#include "WPGImportFilter.hxx" + +bool WPGImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libwpg::WPGraphics::parse(&rInput, &rGenerator); +} + +bool WPGImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libwpg::WPGraphics::isSupported(&rInput)) + { + rTypeName = "draw_WordPerfect_Graphics"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL WPGImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Draw.WPGImportFilter"; +} + +sal_Bool SAL_CALL WPGImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL WPGImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Draw_WPGImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new WPGImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/WPGImportFilter.hxx b/writerperfect/source/draw/WPGImportFilter.hxx new file mode 100644 index 000000000..c4777573d --- /dev/null +++ b/writerperfect/source/draw/WPGImportFilter.hxx @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class WPGImportFilter : public writerperfect::ImportFilter +{ +public: + explicit WPGImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/ZMFImportFilter.cxx b/writerperfect/source/draw/ZMFImportFilter.cxx new file mode 100644 index 000000000..0d1f16c97 --- /dev/null +++ b/writerperfect/source/draw/ZMFImportFilter.cxx @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* ZMFImportFilter: Sets up the filter, and calls OdgExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "ZMFImportFilter.hxx" + +using com::sun::star::uno::Sequence; +using com::sun::star::uno::XComponentContext; +using com::sun::star::uno::XInterface; + +bool ZMFImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libzmf::ZMFDocument::parse(&rInput, &rGenerator); +} + +bool ZMFImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libzmf::ZMFDocument::isSupported(&rInput)) + { + rTypeName = "draw_ZMF_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL ZMFImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Draw.ZMFImportFilter"; +} + +sal_Bool SAL_CALL ZMFImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +Sequence SAL_CALL ZMFImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Draw_ZMFImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new ZMFImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/ZMFImportFilter.hxx b/writerperfect/source/draw/ZMFImportFilter.hxx new file mode 100644 index 000000000..686a1fb40 --- /dev/null +++ b/writerperfect/source/draw/ZMFImportFilter.hxx @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class ZMFImportFilter : public writerperfect::ImportFilter +{ +public: + explicit ZMFImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdgGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/draw/wpftdraw.component b/writerperfect/source/draw/wpftdraw.component new file mode 100644 index 000000000..1f9ced75a --- /dev/null +++ b/writerperfect/source/draw/wpftdraw.component @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/writerperfect/source/impress/KeynoteImportFilter.cxx b/writerperfect/source/impress/KeynoteImportFilter.cxx new file mode 100644 index 000000000..ccd93e3d2 --- /dev/null +++ b/writerperfect/source/impress/KeynoteImportFilter.cxx @@ -0,0 +1,247 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* KeynoteImportFilter: Sets up the filter, and calls OdpExporter + * to do the actual filtering + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "KeynoteImportFilter.hxx" + +using writerperfect::WPXSvInputStream; + +namespace beans = com::sun::star::beans; +namespace ucb = com::sun::star::ucb; + +bool KeynoteImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libetonyek::EtonyekDocument::parse(&rInput, &rGenerator); +} + +bool KeynoteImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libetonyek::EtonyekDocument::isSupported(&rInput)) + { + rTypeName = "impress_Keynote_Document"; + return true; + } + + return false; +} + +// XExtendedFilterDetection +OUString SAL_CALL +KeynoteImportFilter::detect(css::uno::Sequence& Descriptor) +{ + sal_Int32 nLength = Descriptor.getLength(); + sal_Int32 nNewLength = nLength + 2; + sal_Int32 nComponentDataLocation = -1; + sal_Int32 nTypeNameLocation = -1; + sal_Int32 nUCBContentLocation = -1; + bool bIsPackage = false; + bool bUCBContentChanged = false; + const beans::PropertyValue* pValue = Descriptor.getConstArray(); + css::uno::Reference xInputStream; + css::uno::Reference xContent; + css::uno::Sequence lComponentDataNV; + css::uno::Sequence lComponentDataPV; + bool bComponentDataNV = true; + + for (sal_Int32 i = 0; i < nLength; i++) + { + if (pValue[i].Name == "TypeName") + { + nTypeNameLocation = i; + --nNewLength; + } + if (pValue[i].Name == "ComponentData") + { + bComponentDataNV = pValue[i].Value >>= lComponentDataNV; + if (!bComponentDataNV) + pValue[i].Value >>= lComponentDataPV; + nComponentDataLocation = i; + --nNewLength; + } + else if (pValue[i].Name == "InputStream") + { + pValue[i].Value >>= xInputStream; + } + else if (pValue[i].Name == "UCBContent") + { + pValue[i].Value >>= xContent; + nUCBContentLocation = i; + } + } + + assert(nNewLength >= nLength); + + if (!xInputStream.is()) + return OUString(); + + std::unique_ptr input + = std::make_unique(xInputStream); + + /* Apple Keynote documents come in two variants: + * * actual files (zip), only produced by Keynote 5 (at least with + * default settings) + * * packages (IOW, directories), produced by Keynote 1-4 and again + * starting with 6. + * But since the libetonyek import only works with a stream, we need + * to pass it one for the whole package. Here we determine if that + * is needed. + * + * Note: for convenience, we also recognize that the main XML file + * from a package was passed and pass the whole package to the + * filter instead. + */ + if (xContent.is()) + { + ucbhelper::Content aContent(xContent, utl::UCBContentHelper::getDefaultCommandEnvironment(), + comphelper::getProcessComponentContext()); + try + { + if (aContent.isFolder()) + { + input = std::make_unique(xContent); + bIsPackage = true; + } + } + catch (...) + { + return OUString(); + } + } + + libetonyek::EtonyekDocument::Type type = libetonyek::EtonyekDocument::TYPE_UNKNOWN; + const libetonyek::EtonyekDocument::Confidence confidence + = libetonyek::EtonyekDocument::isSupported(input.get(), &type); + if ((libetonyek::EtonyekDocument::CONFIDENCE_NONE == confidence) + || (libetonyek::EtonyekDocument::TYPE_KEYNOTE != type)) + return OUString(); + + if (confidence == libetonyek::EtonyekDocument::CONFIDENCE_SUPPORTED_PART) + { + if (bIsPackage) // we passed a directory stream, but the filter claims it's APXL file? + return OUString(); + + std::unique_ptr xDir + = writerperfect::DirectoryStream::createForParent(xContent); + auto pDir = xDir.get(); + input = std::move(xDir); + if (bool(input)) + { + if (libetonyek::EtonyekDocument::CONFIDENCE_EXCELLENT + == libetonyek::EtonyekDocument::isSupported(input.get())) + { + xContent = pDir->getContent(); + bUCBContentChanged = true; + bIsPackage = true; + } + else + { + // The passed stream has been detected as APXL file, but its parent dir is not a valid Keynote + // package? Something is wrong here... + return OUString(); + } + } + } + + // we do not need to insert ComponentData if this is not a package + if (!bIsPackage && (nComponentDataLocation == -1)) + --nNewLength; + + if (nNewLength > nLength) + Descriptor.realloc(nNewLength); + auto pDescriptor = Descriptor.getArray(); + + if (nTypeNameLocation == -1) + { + assert(nLength < nNewLength); + nTypeNameLocation = nLength++; + pDescriptor[nTypeNameLocation].Name = "TypeName"; + } + + if (bIsPackage && (nComponentDataLocation == -1)) + { + assert(nLength < nNewLength); + nComponentDataLocation = nLength++; + pDescriptor[nComponentDataLocation].Name = "ComponentData"; + } + + if (bIsPackage) + { + if (bComponentDataNV) + { + const sal_Int32 nCDSize = lComponentDataNV.getLength(); + lComponentDataNV.realloc(nCDSize + 1); + beans::NamedValue aValue; + aValue.Name = "IsPackage"; + aValue.Value <<= true; + lComponentDataNV.getArray()[nCDSize] = aValue; + pDescriptor[nComponentDataLocation].Value <<= lComponentDataNV; + } + else + { + const sal_Int32 nCDSize = lComponentDataPV.getLength(); + lComponentDataPV.realloc(nCDSize + 1); + beans::PropertyValue aProp; + aProp.Name = "IsPackage"; + aProp.Value <<= true; + aProp.Handle = -1; + aProp.State = beans::PropertyState_DIRECT_VALUE; + lComponentDataPV.getArray()[nCDSize] = aProp; + pDescriptor[nComponentDataLocation].Value <<= lComponentDataPV; + } + } + + if (bUCBContentChanged) + pDescriptor[nUCBContentLocation].Value <<= xContent; + + const OUString sTypeName("impress_AppleKeynote"); + pDescriptor[nTypeNameLocation].Value <<= sTypeName; + + return sTypeName; +} + +// XServiceInfo +OUString SAL_CALL KeynoteImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Impress.KeynoteImportFilter"; +} + +sal_Bool SAL_CALL KeynoteImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL KeynoteImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Impress_KeynoteImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new KeynoteImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/impress/KeynoteImportFilter.hxx b/writerperfect/source/impress/KeynoteImportFilter.hxx new file mode 100644 index 000000000..7180a8c86 --- /dev/null +++ b/writerperfect/source/impress/KeynoteImportFilter.hxx @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class KeynoteImportFilter : public writerperfect::ImportFilter +{ +public: + explicit KeynoteImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + //XExtendedFilterDetection + virtual OUString SAL_CALL + detect(css::uno::Sequence& Descriptor) override; + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/impress/MWAWPresentationImportFilter.cxx b/writerperfect/source/impress/MWAWPresentationImportFilter.cxx new file mode 100644 index 000000000..c5de6984a --- /dev/null +++ b/writerperfect/source/impress/MWAWPresentationImportFilter.cxx @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MWAWPresentationImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "MWAWPresentationImportFilter.hxx" + +static bool handleEmbeddedMWAWGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedMWAWSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeSpreadsheet(data, &exporter); +} + +bool MWAWPresentationImportFilter::doImportDocument(weld::Window*, + librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, utl::MediaDescriptor&) +{ + return MWAWDocument::MWAW_R_OK == MWAWDocument::parse(&rInput, &rGenerator); +} + +bool MWAWPresentationImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, + OUString& rTypeName) +{ + rTypeName.clear(); + + MWAWDocument::Type docType = MWAWDocument::MWAW_T_UNKNOWN; + MWAWDocument::Kind docKind = MWAWDocument::MWAW_K_UNKNOWN; + const MWAWDocument::Confidence confidence + = MWAWDocument::isFileFormatSupported(&rInput, docType, docKind); + + if (confidence == MWAWDocument::MWAW_C_EXCELLENT) + { + if (docKind == MWAWDocument::MWAW_K_PRESENTATION) + { + switch (docType) + { + case MWAWDocument::MWAW_T_CLARISWORKS: + rTypeName = "impress_ClarisWorks"; + break; + case MWAWDocument::MWAW_T_RESERVED8: + rTypeName = "impress_PowerPoint3"; + break; + default: + rTypeName = "MWAW_Presentation"; + break; + } + } + } + + return !rTypeName.isEmpty(); +} + +void MWAWPresentationImportFilter::doRegisterHandlers(OdpGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/mwaw-ods", + &handleEmbeddedMWAWSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL MWAWPresentationImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Impress.MWAWPresentationImportFilter"; +} +sal_Bool SAL_CALL MWAWPresentationImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} +css::uno::Sequence SAL_CALL MWAWPresentationImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Impress_MWAWPresentationImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MWAWPresentationImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/impress/MWAWPresentationImportFilter.hxx b/writerperfect/source/impress/MWAWPresentationImportFilter.hxx new file mode 100644 index 000000000..ba6874834 --- /dev/null +++ b/writerperfect/source/impress/MWAWPresentationImportFilter.hxx @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MWAWPresentationImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MWAWPresentationImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdpGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/impress/StarOfficePresentationImportFilter.cxx b/writerperfect/source/impress/StarOfficePresentationImportFilter.cxx new file mode 100644 index 000000000..4f60f57e3 --- /dev/null +++ b/writerperfect/source/impress/StarOfficePresentationImportFilter.cxx @@ -0,0 +1,102 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "StarOfficePresentationImportFilter.hxx" + +using com::sun::star::uno::Sequence; +using com::sun::star::uno::XComponentContext; +using com::sun::star::uno::XInterface; + +static bool handleEmbeddedSTOFFGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedSTOFFSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.registerEmbeddedObjectHandler("image/stoff-odg", &handleEmbeddedSTOFFGraphicObject); + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeSpreadsheet(data, &exporter); +} + +bool StarOfficePresentationImportFilter::doImportDocument(weld::Window*, + librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, + utl::MediaDescriptor&) +{ + return STOFFDocument::STOFF_R_OK == STOFFDocument::parse(&rInput, &rGenerator); +} + +bool StarOfficePresentationImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, + OUString& rTypeName) +{ + rTypeName.clear(); + + STOFFDocument::Kind docKind = STOFFDocument::STOFF_K_UNKNOWN; + const STOFFDocument::Confidence confidence + = STOFFDocument::isFileFormatSupported(&rInput, docKind); + + if (confidence == STOFFDocument::STOFF_C_EXCELLENT + || confidence == STOFFDocument::STOFF_C_SUPPORTED_ENCRYPTION) + { + switch (docKind) + { + case STOFFDocument::STOFF_K_PRESENTATION: + rTypeName = "StarOffice_Presentation"; + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void StarOfficePresentationImportFilter::doRegisterHandlers(OdpGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/stoff-odg", &handleEmbeddedSTOFFGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/stoff-ods", + &handleEmbeddedSTOFFSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL StarOfficePresentationImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Impress.StarOfficePresentationImportFilter"; +} + +sal_Bool SAL_CALL StarOfficePresentationImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +Sequence SAL_CALL StarOfficePresentationImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Presentation_StarOfficePresentationImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new StarOfficePresentationImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/impress/StarOfficePresentationImportFilter.hxx b/writerperfect/source/impress/StarOfficePresentationImportFilter.hxx new file mode 100644 index 000000000..0f10a9258 --- /dev/null +++ b/writerperfect/source/impress/StarOfficePresentationImportFilter.hxx @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class StarOfficePresentationImportFilter : public writerperfect::ImportFilter +{ +public: + explicit StarOfficePresentationImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdpGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdpGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/impress/wpftimpress.component b/writerperfect/source/impress/wpftimpress.component new file mode 100644 index 000000000..0f7df39fa --- /dev/null +++ b/writerperfect/source/impress/wpftimpress.component @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + diff --git a/writerperfect/source/writer/AbiWordImportFilter.cxx b/writerperfect/source/writer/AbiWordImportFilter.cxx new file mode 100644 index 000000000..0661604bc --- /dev/null +++ b/writerperfect/source/writer/AbiWordImportFilter.cxx @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* AbiWordImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "AbiWordImportFilter.hxx" + +bool AbiWordImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) +{ + return libabw::AbiDocument::parse(&rInput, &rGenerator); +} + +bool AbiWordImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + if (libabw::AbiDocument::isFileFormatSupported(&rInput)) + { + rTypeName = "writer_AbiWord_Document"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL AbiWordImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Writer.AbiWordImportFilter"; +} + +sal_Bool SAL_CALL AbiWordImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL AbiWordImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Writer_AbiWordImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new AbiWordImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/AbiWordImportFilter.hxx b/writerperfect/source/writer/AbiWordImportFilter.hxx new file mode 100644 index 000000000..f9b0f99d9 --- /dev/null +++ b/writerperfect/source/writer/AbiWordImportFilter.hxx @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class AbiWordImportFilter : public writerperfect::ImportFilter +{ +public: + explicit AbiWordImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EBookImportFilter.cxx b/writerperfect/source/writer/EBookImportFilter.cxx new file mode 100644 index 000000000..3c53f2d9e --- /dev/null +++ b/writerperfect/source/writer/EBookImportFilter.cxx @@ -0,0 +1,114 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* EBookImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include + +#include + +#include "EBookImportFilter.hxx" + +using libebook::EBOOKDocument; + +bool EBookImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) +{ + OUString aFilterName; + + rDescriptor[utl::MediaDescriptor::PROP_FILTERNAME] >>= aFilterName; + assert(!aFilterName.isEmpty()); + + if (aFilterName == "Palm_Text_Document") + { + return EBOOKDocument::RESULT_OK == EBOOKDocument::parse(&rInput, &rGenerator); + } + else + { + EBOOKDocument::Type type = EBOOKDocument::TYPE_UNKNOWN; + + if (aFilterName == "BroadBand eBook") + type = EBOOKDocument::TYPE_BBEB; + else if (aFilterName == "FictionBook 2") + type = EBOOKDocument::TYPE_FICTIONBOOK2; + else if (aFilterName == "PalmDoc") + type = EBOOKDocument::TYPE_PALMDOC; + else if (aFilterName == "Plucker eBook") + type = EBOOKDocument::TYPE_PLUCKER; + + if (EBOOKDocument::TYPE_UNKNOWN != type) + return EBOOKDocument::RESULT_OK == EBOOKDocument::parse(&rInput, &rGenerator, type); + } + + return false; +} + +bool EBookImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + rTypeName.clear(); + + EBOOKDocument::Type type = EBOOKDocument::TYPE_UNKNOWN; + + if (EBOOKDocument::CONFIDENCE_EXCELLENT == EBOOKDocument::isSupported(&rInput, &type)) + { + switch (type) + { + case EBOOKDocument::TYPE_BBEB: + rTypeName = "writer_BroadBand_eBook"; + break; + case EBOOKDocument::TYPE_FICTIONBOOK2: + rTypeName = "writer_FictionBook_2"; + break; + case EBOOKDocument::TYPE_PALMDOC: + rTypeName = "writer_PalmDoc"; + break; + case EBOOKDocument::TYPE_PLUCKER: + rTypeName = "writer_Plucker_eBook"; + break; + case EBOOKDocument::TYPE_PEANUTPRESS: + case EBOOKDocument::TYPE_TEALDOC: + case EBOOKDocument::TYPE_ZTXT: + rTypeName = "Palm_Text_Document"; + break; + default: + SAL_WARN_IF(type != EBOOKDocument::TYPE_UNKNOWN, "writerperfect", + "EBookImportFilter::doDetectFormat: document type " + << type << " detected, but ignored"); + } + } + + return !rTypeName.isEmpty(); +} + +// XServiceInfo +OUString SAL_CALL EBookImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Writer.EBookImportFilter"; +} + +sal_Bool SAL_CALL EBookImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL EBookImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Writer_EBookImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new EBookImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EBookImportFilter.hxx b/writerperfect/source/writer/EBookImportFilter.hxx new file mode 100644 index 000000000..9ebdc9234 --- /dev/null +++ b/writerperfect/source/writer/EBookImportFilter.hxx @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef EBOOKIMPORTFILTER_HXX +#define EBOOKIMPORTFILTER_HXX + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class EBookImportFilter : public writerperfect::ImportFilter +{ +public: + explicit EBookImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) override; +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBExportDialog.cxx b/writerperfect/source/writer/EPUBExportDialog.cxx new file mode 100644 index 000000000..0bba77a18 --- /dev/null +++ b/writerperfect/source/writer/EPUBExportDialog.cxx @@ -0,0 +1,224 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "EPUBExportDialog.hxx" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "EPUBExportFilter.hxx" + +using namespace com::sun::star; + +namespace +{ +/// Converts version value to a listbox entry position. +sal_Int32 VersionToPosition(sal_Int32 nVersion) +{ + sal_Int32 nPosition = 0; + + switch (nVersion) + { + case 30: + nPosition = 0; + break; + case 20: + nPosition = 1; + break; + default: + assert(false); + break; + } + + return nPosition; +} + +/// Converts listbox entry position to a version value. +sal_Int32 PositionToVersion(sal_Int32 nPosition) +{ + sal_Int32 nVersion = 0; + + switch (nPosition) + { + case 0: + nVersion = 30; + break; + case 1: + nVersion = 20; + break; + default: + assert(false); + break; + } + + return nVersion; +} +} + +namespace writerperfect +{ +EPUBExportDialog::EPUBExportDialog(weld::Window* pParent, + comphelper::SequenceAsHashMap& rFilterData, + uno::Reference xContext, + css::uno::Reference xDocument) + : GenericDialogController(pParent, "writerperfect/ui/exportepub.ui", "EpubDialog") + , m_xContext(std::move(xContext)) + , m_rFilterData(rFilterData) + , m_xSourceDocument(std::move(xDocument)) + , m_xVersion(m_xBuilder->weld_combo_box("versionlb")) + , m_xSplit(m_xBuilder->weld_combo_box("splitlb")) + , m_xLayout(m_xBuilder->weld_combo_box("layoutlb")) + , m_xCoverPath(m_xBuilder->weld_entry("coverpath")) + , m_xCoverButton(m_xBuilder->weld_button("coverbutton")) + , m_xMediaDir(m_xBuilder->weld_entry("mediadir")) + , m_xMediaButton(m_xBuilder->weld_button("mediabutton")) + , m_xOKButton(m_xBuilder->weld_button("ok")) + , m_xIdentifier(m_xBuilder->weld_entry("identifier")) + , m_xTitle(m_xBuilder->weld_entry("title")) + , m_xInitialCreator(m_xBuilder->weld_entry("author")) + , m_xLanguage(m_xBuilder->weld_entry("language")) + , m_xDate(m_xBuilder->weld_entry("date")) + +{ + assert(PositionToVersion(m_xVersion->get_active()) == EPUBExportFilter::GetDefaultVersion()); + + auto it = rFilterData.find("EPUBVersion"); + if (it != rFilterData.end()) + { + sal_Int32 nVersion = 0; + if (it->second >>= nVersion) + m_xVersion->set_active(VersionToPosition(nVersion)); + } + m_xVersion->connect_changed(LINK(this, EPUBExportDialog, VersionSelectHdl)); + + it = rFilterData.find("EPUBSplitMethod"); + if (it != rFilterData.end()) + { + sal_Int32 nSplitMethod = 0; + if (it->second >>= nSplitMethod) + // No conversion, 1:1 mapping between libepubgen::EPUBSplitMethod + // and entry positions. + m_xSplit->set_active(nSplitMethod); + } + else + m_xSplit->set_active(EPUBExportFilter::GetDefaultSplitMethod()); + m_xSplit->connect_changed(LINK(this, EPUBExportDialog, SplitSelectHdl)); + + it = rFilterData.find("EPUBLayoutMethod"); + if (it != rFilterData.end()) + { + sal_Int32 nLayoutMethod = 0; + if (it->second >>= nLayoutMethod) + // No conversion, 1:1 mapping between libepubgen::EPUBLayoutMethod + // and entry positions. + m_xLayout->set_active(nLayoutMethod); + } + else + m_xLayout->set_active(EPUBExportFilter::GetDefaultLayoutMethod()); + m_xLayout->connect_changed(LINK(this, EPUBExportDialog, LayoutSelectHdl)); + + m_xCoverButton->connect_clicked(LINK(this, EPUBExportDialog, CoverClickHdl)); + + m_xMediaButton->connect_clicked(LINK(this, EPUBExportDialog, MediaClickHdl)); + + uno::Reference xDPS(m_xSourceDocument, uno::UNO_QUERY); + uno::Reference xDP; + if (xDPS.is()) + xDP = xDPS->getDocumentProperties(); + if (xDP.is()) + { + m_xTitle->set_text(xDP->getTitle()); + m_xInitialCreator->set_text(xDP->getAuthor()); + + OUString aLanguage(LanguageTag::convertToBcp47(xDP->getLanguage(), false)); + m_xLanguage->set_text(aLanguage); + + OUStringBuffer aBuffer; + util::DateTime aDate(xDP->getModificationDate()); + sax::Converter::convertDateTime(aBuffer, aDate, nullptr, true); + m_xDate->set_text(aBuffer.makeStringAndClear()); + } + + m_xOKButton->connect_clicked(LINK(this, EPUBExportDialog, OKClickHdl)); +} + +IMPL_LINK_NOARG(EPUBExportDialog, VersionSelectHdl, weld::ComboBox&, void) +{ + m_rFilterData["EPUBVersion"] <<= PositionToVersion(m_xVersion->get_active()); +} + +IMPL_LINK_NOARG(EPUBExportDialog, SplitSelectHdl, weld::ComboBox&, void) +{ + // No conversion, 1:1 mapping between entry positions and + // libepubgen::EPUBSplitMethod. + m_rFilterData["EPUBSplitMethod"] <<= static_cast(m_xSplit->get_active()); +} + +IMPL_LINK_NOARG(EPUBExportDialog, LayoutSelectHdl, weld::ComboBox&, void) +{ + // No conversion, 1:1 mapping between entry positions and + // libepubgen::EPUBLayoutMethod. + m_rFilterData["EPUBLayoutMethod"] <<= static_cast(m_xLayout->get_active()); + m_xSplit->set_sensitive(m_xLayout->get_active() != libepubgen::EPUB_LAYOUT_METHOD_FIXED); +} + +IMPL_LINK_NOARG(EPUBExportDialog, CoverClickHdl, weld::Button&, void) +{ + SvxOpenGraphicDialog aDlg("Import", m_xDialog.get()); + aDlg.EnableLink(false); + if (aDlg.Execute() == ERRCODE_NONE) + m_xCoverPath->set_text(aDlg.GetPath()); +} + +IMPL_LINK_NOARG(EPUBExportDialog, MediaClickHdl, weld::Button&, void) +{ + uno::Reference xFolderPicker + = sfx2::createFolderPicker(m_xContext, m_xDialog.get()); + if (xFolderPicker->execute() != ui::dialogs::ExecutableDialogResults::OK) + return; + + m_xMediaDir->set_text(xFolderPicker->getDirectory()); +} + +IMPL_LINK_NOARG(EPUBExportDialog, OKClickHdl, weld::Button&, void) +{ + // General + if (!m_xCoverPath->get_text().isEmpty()) + m_rFilterData["RVNGCoverImage"] <<= m_xCoverPath->get_text(); + if (!m_xMediaDir->get_text().isEmpty()) + m_rFilterData["RVNGMediaDir"] <<= m_xMediaDir->get_text(); + + // Metadata + if (!m_xIdentifier->get_text().isEmpty()) + m_rFilterData["RVNGIdentifier"] <<= m_xIdentifier->get_text(); + if (!m_xTitle->get_text().isEmpty()) + m_rFilterData["RVNGTitle"] <<= m_xTitle->get_text(); + if (!m_xInitialCreator->get_text().isEmpty()) + m_rFilterData["RVNGInitialCreator"] <<= m_xInitialCreator->get_text(); + if (!m_xLanguage->get_text().isEmpty()) + m_rFilterData["RVNGLanguage"] <<= m_xLanguage->get_text(); + if (!m_xDate->get_text().isEmpty()) + m_rFilterData["RVNGDate"] <<= m_xDate->get_text(); + + m_xDialog->response(RET_OK); +} + +EPUBExportDialog::~EPUBExportDialog() = default; + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBExportDialog.hxx b/writerperfect/source/writer/EPUBExportDialog.hxx new file mode 100644 index 000000000..9e11d5351 --- /dev/null +++ b/writerperfect/source/writer/EPUBExportDialog.hxx @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include +#include +#include + +namespace comphelper +{ +class SequenceAsHashMap; +} + +namespace writerperfect +{ +/// EPUB export options dialog. +class EPUBExportDialog : public weld::GenericDialogController +{ +public: + EPUBExportDialog(weld::Window* pParent, comphelper::SequenceAsHashMap& rFilterData, + css::uno::Reference xContext, + css::uno::Reference xDocument); + ~EPUBExportDialog() override; + +private: + DECL_LINK(VersionSelectHdl, weld::ComboBox&, void); + DECL_LINK(SplitSelectHdl, weld::ComboBox&, void); + DECL_LINK(LayoutSelectHdl, weld::ComboBox&, void); + DECL_LINK(CoverClickHdl, weld::Button&, void); + DECL_LINK(MediaClickHdl, weld::Button&, void); + DECL_LINK(OKClickHdl, weld::Button&, void); + + css::uno::Reference m_xContext; + comphelper::SequenceAsHashMap& m_rFilterData; + css::uno::Reference m_xSourceDocument; + + std::unique_ptr m_xVersion; + std::unique_ptr m_xSplit; + std::unique_ptr m_xLayout; + std::unique_ptr m_xCoverPath; + std::unique_ptr m_xCoverButton; + std::unique_ptr m_xMediaDir; + std::unique_ptr m_xMediaButton; + std::unique_ptr m_xOKButton; + std::unique_ptr m_xIdentifier; + std::unique_ptr m_xTitle; + std::unique_ptr m_xInitialCreator; + std::unique_ptr m_xLanguage; + std::unique_ptr m_xDate; +}; + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBExportFilter.cxx b/writerperfect/source/writer/EPUBExportFilter.cxx new file mode 100644 index 000000000..8ac55af19 --- /dev/null +++ b/writerperfect/source/writer/EPUBExportFilter.cxx @@ -0,0 +1,206 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "EPUBExportFilter.hxx" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "exp/xmlimp.hxx" +#include "EPUBPackage.hxx" + +using namespace com::sun::star; + +namespace writerperfect +{ +EPUBExportFilter::EPUBExportFilter(uno::Reference xContext) + : mxContext(std::move(xContext)) +{ +} + +sal_Int32 EPUBExportFilter::GetDefaultVersion() { return 30; } + +sal_Int32 EPUBExportFilter::GetDefaultSplitMethod() +{ + return libepubgen::EPUB_SPLIT_METHOD_HEADING; +} + +sal_Int32 EPUBExportFilter::GetDefaultLayoutMethod() +{ + return libepubgen::EPUB_LAYOUT_METHOD_REFLOWABLE; +} + +sal_Bool EPUBExportFilter::filter(const uno::Sequence& rDescriptor) +{ + sal_Int32 nVersion = EPUBExportFilter::GetDefaultVersion(); + sal_Int32 nSplitMethod = EPUBExportFilter::GetDefaultSplitMethod(); + sal_Int32 nLayoutMethod = EPUBExportFilter::GetDefaultLayoutMethod(); + uno::Sequence aFilterData; + OUString aFilterOptions; + for (const auto& rProp : rDescriptor) + { + if (rProp.Name == "FilterData") + rProp.Value >>= aFilterData; + else if (rProp.Name == "FilterOptions") + rProp.Value >>= aFilterOptions; + } + + if (aFilterOptions == "layout=fixed") + nLayoutMethod = libepubgen::EPUB_LAYOUT_METHOD_FIXED; + + for (const auto& rProp : std::as_const(aFilterData)) + { + if (rProp.Name == "EPUBVersion") + rProp.Value >>= nVersion; + else if (rProp.Name == "EPUBSplitMethod") + rProp.Value >>= nSplitMethod; + else if (rProp.Name == "EPUBLayoutMethod") + rProp.Value >>= nLayoutMethod; + } + + // Build the export filter chain: the package has direct access to the ZIP + // file, the flat ODF filter has access to the doc model, everything else + // is in-between. + EPUBPackage aPackage(mxContext, rDescriptor); + libepubgen::EPUBTextGenerator aGenerator(&aPackage, nVersion); + aGenerator.setOption(libepubgen::EPUB_GENERATOR_OPTION_SPLIT, nSplitMethod); + aGenerator.setOption(libepubgen::EPUB_GENERATOR_OPTION_LAYOUT, nLayoutMethod); + OUString aSourceURL; + uno::Reference xSourceModel(mxSourceDocument, uno::UNO_QUERY); + if (xSourceModel.is()) + aSourceURL = xSourceModel->getURL(); + + std::vector aPageMetafiles; + if (nLayoutMethod == libepubgen::EPUB_LAYOUT_METHOD_FIXED) + CreateMetafiles(aPageMetafiles); + + uno::Reference xExportHandler( + new exp::XMLImport(mxContext, aGenerator, aSourceURL, rDescriptor, aPageMetafiles)); + + uno::Reference xInitialization( + mxContext->getServiceManager()->createInstanceWithContext( + "com.sun.star.comp.Writer.XMLOasisExporter", mxContext), + uno::UNO_QUERY); + + // A subset of parameters are passed in as a property set. + static comphelper::PropertyMapEntry const aInfoMap[] + = { { OUString("BaseURI"), 0, cppu::UnoType::get(), + beans::PropertyAttribute::MAYBEVOID, 0 } }; + uno::Reference xInfoSet( + comphelper::GenericPropertySet_CreateInstance(new comphelper::PropertySetInfo(aInfoMap))); + xInfoSet->setPropertyValue("BaseURI", uno::Any(aSourceURL)); + + xInitialization->initialize({ uno::Any(xExportHandler), uno::Any(xInfoSet) }); + uno::Reference xExporter(xInitialization, uno::UNO_QUERY); + xExporter->setSourceDocument(mxSourceDocument); + uno::Reference xFilter(xInitialization, uno::UNO_QUERY); + + return xFilter->filter(rDescriptor); +} + +void EPUBExportFilter::CreateMetafiles(std::vector& rPageMetafiles) +{ + DocumentToGraphicRenderer aRenderer(mxSourceDocument, /*bSelectionOnly=*/false); + uno::Reference xModel(mxSourceDocument, uno::UNO_QUERY); + if (!xModel.is()) + return; + + uno::Reference xTextViewCursorSupplier( + xModel->getCurrentController(), uno::UNO_QUERY); + if (!xTextViewCursorSupplier.is()) + return; + + uno::Reference xCursor(xTextViewCursorSupplier->getViewCursor(), + uno::UNO_QUERY); + if (!xCursor.is()) + return; + + xCursor->jumpToLastPage(); + sal_Int16 nPages = xCursor->getPage(); + for (sal_Int16 nPage = 1; nPage <= nPages; ++nPage) + { + Size aDocumentSizePixel = aRenderer.getDocumentSizeInPixels(nPage); + Size aLogic = aRenderer.getDocumentSizeIn100mm(nPage); + // Get the CSS pixel size of the page (mm100 -> pixel using 96 DPI, independent from system DPI). + Size aCss(static_cast(aLogic.getWidth()) / 26.4583, + static_cast(aLogic.getHeight()) / 26.4583); + Graphic aGraphic = aRenderer.renderToGraphic(nPage, aDocumentSizePixel, aCss, COL_WHITE, + /*bExtOutDevData=*/true); + auto& rGDIMetaFile = const_cast(aGraphic.GetGDIMetaFile()); + + // Set preferred map unit and size on the metafile, so the SVG size + // will be correct in MM. + MapMode aMapMode; + aMapMode.SetMapUnit(MapUnit::Map100thMM); + rGDIMetaFile.SetPrefMapMode(aMapMode); + rGDIMetaFile.SetPrefSize(aLogic); + + SvMemoryStream aMemoryStream; + SvmWriter aWriter(aMemoryStream); + aWriter.Write(rGDIMetaFile); + uno::Sequence aSequence(static_cast(aMemoryStream.GetData()), + aMemoryStream.Tell()); + + exp::FixedLayoutPage aPage; + aPage.aMetafile = aSequence; + aPage.aCssPixels = aCss; + aPage.aChapterNames = aRenderer.getChapterNames(); + rPageMetafiles.push_back(aPage); + } +} + +void EPUBExportFilter::cancel() {} + +void EPUBExportFilter::setSourceDocument(const uno::Reference& xDocument) +{ + mxSourceDocument = xDocument; +} + +OUString EPUBExportFilter::getImplementationName() +{ + return "com.sun.star.comp.Writer.EPUBExportFilter"; +} + +sal_Bool EPUBExportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +uno::Sequence EPUBExportFilter::getSupportedServiceNames() +{ + uno::Sequence aRet = { OUString("com.sun.star.document.ExportFilter") }; + return aRet; +} + +extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface* +com_sun_star_comp_Writer_EPUBExportFilter_get_implementation( + uno::XComponentContext* pContext, uno::Sequence const& /*rSeq*/) +{ + return cppu::acquire(new EPUBExportFilter(pContext)); +} + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBExportFilter.hxx b/writerperfect/source/writer/EPUBExportFilter.hxx new file mode 100644 index 000000000..6cf007ff4 --- /dev/null +++ b/writerperfect/source/writer/EPUBExportFilter.hxx @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include +#include +#include + +namespace com::sun::star::uno +{ +class XComponentContext; +} + +namespace writerperfect +{ +namespace exp +{ +struct FixedLayoutPage; +} + +/// EPUB export XFilter implementation. +class EPUBExportFilter + : public cppu::WeakImplHelper +{ + css::uno::Reference mxContext; + css::uno::Reference mxSourceDocument; + +public: + EPUBExportFilter(css::uno::Reference xContext); + + // XFilter + sal_Bool SAL_CALL + filter(const css::uno::Sequence& rDescriptor) override; + void SAL_CALL cancel() override; + + // XExporter + void SAL_CALL + setSourceDocument(const css::uno::Reference& xDocument) override; + + // XServiceInfo + OUString SAL_CALL getImplementationName() override; + sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override; + css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + + /// Gives the default EPUB version. + static sal_Int32 GetDefaultVersion(); + /// Gives the default split method. + static sal_Int32 GetDefaultSplitMethod(); + /// Gives the default layout method. + static sal_Int32 GetDefaultLayoutMethod(); + +private: + /// Create page metafiles in case of fixed layout. + void CreateMetafiles(std::vector& rPageMetafiles); +}; + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBExportUIComponent.cxx b/writerperfect/source/writer/EPUBExportUIComponent.cxx new file mode 100644 index 000000000..e8d618b99 --- /dev/null +++ b/writerperfect/source/writer/EPUBExportUIComponent.cxx @@ -0,0 +1,102 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "EPUBExportUIComponent.hxx" + +#include +#include +#include +#include + +#include "EPUBExportDialog.hxx" + +using namespace com::sun::star; + +namespace writerperfect +{ +EPUBExportUIComponent::EPUBExportUIComponent(uno::Reference xContext) + : mxContext(std::move(xContext)) +{ +} + +uno::Sequence EPUBExportUIComponent::getPropertyValues() +{ + maMediaDescriptor["FilterData"] <<= maFilterData.getAsConstPropertyValueList(); + return maMediaDescriptor.getAsConstPropertyValueList(); +} + +void EPUBExportUIComponent::setPropertyValues( + const uno::Sequence& rProperties) +{ + maMediaDescriptor.clear(); + maMediaDescriptor << rProperties; + auto it = maMediaDescriptor.find("FilterData"); + if (it != maMediaDescriptor.end()) + { + uno::Sequence aFilterData; + if (it->second >>= aFilterData) + { + maFilterData.clear(); + maFilterData << aFilterData; + } + } +} + +OUString EPUBExportUIComponent::getImplementationName() +{ + return "com.sun.star.comp.Writer.EPUBExportUIComponent"; +} + +sal_Bool EPUBExportUIComponent::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +uno::Sequence EPUBExportUIComponent::getSupportedServiceNames() +{ + uno::Sequence aRet = { OUString("com.sun.star.ui.dialogs.FilterOptionsDialog") }; + return aRet; +} + +void EPUBExportUIComponent::setTitle(const OUString& /*rTitle*/) {} + +void SAL_CALL EPUBExportUIComponent::initialize(const uno::Sequence& rArguments) +{ + ::comphelper::NamedValueCollection aProperties(rArguments); + if (aProperties.has("ParentWindow")) + aProperties.get("ParentWindow") >>= mxDialogParent; +} + +sal_Int16 EPUBExportUIComponent::execute() +{ + SolarMutexGuard aGuard; + + EPUBExportDialog aDialog(Application::GetFrameWeld(mxDialogParent), maFilterData, mxContext, + mxSourceDocument); + if (aDialog.run() == RET_OK) + return ui::dialogs::ExecutableDialogResults::OK; + return ui::dialogs::ExecutableDialogResults::CANCEL; +} + +void SAL_CALL EPUBExportUIComponent::setSourceDocument( + const css::uno::Reference& xDocument) +{ + mxSourceDocument = xDocument; +} + +extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface* +com_sun_star_comp_Writer_EPUBExportUIComponent_get_implementation( + uno::XComponentContext* pCtx, uno::Sequence const& /*rSeq*/) +{ + return cppu::acquire(new EPUBExportUIComponent(pCtx)); +} + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBExportUIComponent.hxx b/writerperfect/source/writer/EPUBExportUIComponent.hxx new file mode 100644 index 000000000..71fcc0ace --- /dev/null +++ b/writerperfect/source/writer/EPUBExportUIComponent.hxx @@ -0,0 +1,72 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace com::sun::star::uno +{ +class XComponentContext; +} + +namespace writerperfect +{ +/// EPUB export UI component implementation. +class EPUBExportUIComponent + : public cppu::WeakImplHelper +{ +public: + EPUBExportUIComponent(css::uno::Reference xContext); + + // XPropertyAccess + css::uno::Sequence SAL_CALL getPropertyValues() override; + void SAL_CALL + setPropertyValues(const css::uno::Sequence& rProperties) override; + + // XServiceInfo + OUString SAL_CALL getImplementationName() override; + sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override; + css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + + // XExecutableDialog + void SAL_CALL setTitle(const OUString& rTitle) override; + sal_Int16 SAL_CALL execute() override; + + // XExporter + void SAL_CALL + setSourceDocument(const css::uno::Reference& xDocument) override; + + // XInitialization + void SAL_CALL initialize(const css::uno::Sequence& rArguments) override; + +private: + /// The full set of property values. + comphelper::SequenceAsHashMap maMediaDescriptor; + /// The filter data key. + comphelper::SequenceAsHashMap maFilterData; + /// UNO context. + css::uno::Reference mxContext; + css::uno::Reference mxSourceDocument; + css::uno::Reference mxDialogParent; +}; + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBPackage.cxx b/writerperfect/source/writer/EPUBPackage.cxx new file mode 100644 index 000000000..727a8ed7e --- /dev/null +++ b/writerperfect/source/writer/EPUBPackage.cxx @@ -0,0 +1,215 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "EPUBPackage.hxx" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +using namespace com::sun::star; + +namespace writerperfect +{ +EPUBPackage::EPUBPackage(uno::Reference xContext, + const uno::Sequence& rDescriptor) + : mxContext(std::move(xContext)) +{ + // Extract the output stream from the descriptor. + utl::MediaDescriptor aMediaDesc(rDescriptor); + auto xStream = aMediaDesc.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_STREAMFOROUTPUT, + uno::Reference()); + const sal_Int32 nOpenMode = embed::ElementModes::READWRITE | embed::ElementModes::TRUNCATE; + mxStorage.set(comphelper::OStorageHelper::GetStorageOfFormatFromStream( + ZIP_STORAGE_FORMAT_STRING, xStream, nOpenMode, mxContext), + uno::UNO_QUERY); + + // The zipped content represents an EPUB Publication. + mxOutputStream.set( + mxStorage->openStreamElementByHierarchicalName("mimetype", embed::ElementModes::READWRITE), + uno::UNO_QUERY); + const OString aMimeType("application/epub+zip"); + uno::Sequence aData(reinterpret_cast(aMimeType.getStr()), + aMimeType.getLength()); + mxOutputStream->writeBytes(aData); + uno::Reference xTransactedObject(mxOutputStream, uno::UNO_QUERY); + xTransactedObject->commit(); + + // MIME type must be uncompressed. + uno::Reference xPropertySet(mxOutputStream, uno::UNO_QUERY); + xPropertySet->setPropertyValue("Compressed", uno::Any(false)); + mxOutputStream.clear(); +} + +EPUBPackage::~EPUBPackage() +{ + uno::Reference xTransactedObject(mxStorage, uno::UNO_QUERY); + xTransactedObject->commit(); +} + +void EPUBPackage::openXMLFile(const char* pName) +{ + assert(pName); + assert(!mxOutputStream.is()); + assert(!mxOutputWriter.is()); + + mxOutputStream.set(mxStorage->openStreamElementByHierarchicalName( + OUString::fromUtf8(pName), embed::ElementModes::READWRITE), + uno::UNO_QUERY); + mxOutputWriter = xml::sax::Writer::create(mxContext); + mxOutputWriter->setOutputStream(mxOutputStream); + mxOutputWriter->startDocument(); +} + +void EPUBPackage::openElement(const char* pName, const librevenge::RVNGPropertyList& rAttributes) +{ + assert(mxOutputWriter.is()); + + rtl::Reference pAttributeList(new SvXMLAttributeList()); + + librevenge::RVNGPropertyList::Iter it(rAttributes); + for (it.rewind(); it.next();) + pAttributeList->AddAttribute(OUString::fromUtf8(it.key()), + OUString::fromUtf8(it()->getStr().cstr())); + + mxOutputWriter->startElement(OUString::fromUtf8(pName), pAttributeList); +} + +void EPUBPackage::closeElement(const char* pName) +{ + assert(mxOutputWriter.is()); + + mxOutputWriter->endElement(OUString::fromUtf8(pName)); +} + +void EPUBPackage::insertCharacters(const librevenge::RVNGString& rCharacters) +{ + mxOutputWriter->characters(OUString::fromUtf8(rCharacters.cstr())); +} + +void EPUBPackage::closeXMLFile() +{ + assert(mxOutputWriter.is()); + assert(mxOutputStream.is()); + + mxOutputWriter->endDocument(); + mxOutputWriter.clear(); + + uno::Reference xTransactedObject(mxOutputStream, uno::UNO_QUERY); + xTransactedObject->commit(); + mxOutputStream.clear(); +} + +void EPUBPackage::openCSSFile(const char* pName) +{ + assert(pName); + assert(!mxOutputStream.is()); + + mxOutputStream.set(mxStorage->openStreamElementByHierarchicalName( + OUString::fromUtf8(pName), embed::ElementModes::READWRITE), + uno::UNO_QUERY); +} + +void EPUBPackage::insertRule(const librevenge::RVNGString& rSelector, + const librevenge::RVNGPropertyList& rProperties) +{ + assert(mxOutputStream.is()); + + uno::Reference xSeekable(mxOutputStream, uno::UNO_QUERY); + std::stringstream aStream; + if (xSeekable->getPosition() != 0) + aStream << '\n'; + aStream << rSelector.cstr() << " {\n"; + + librevenge::RVNGPropertyList::Iter it(rProperties); + for (it.rewind(); it.next();) + { + if (it()) + aStream << " " << it.key() << ": " << it()->getStr().cstr() << ";\n"; + } + + aStream << "}\n"; + std::string aString = aStream.str(); + uno::Sequence aData(reinterpret_cast(aString.c_str()), + aString.size()); + mxOutputStream->writeBytes(aData); +} + +void EPUBPackage::closeCSSFile() +{ + assert(mxOutputStream.is()); + + uno::Reference xTransactedObject(mxOutputStream, uno::UNO_QUERY); + xTransactedObject->commit(); + mxOutputStream.clear(); +} + +void EPUBPackage::openBinaryFile(const char* pName) +{ + assert(pName); + assert(!mxOutputStream.is()); + + mxOutputStream.set(mxStorage->openStreamElementByHierarchicalName( + OUString::fromUtf8(pName), embed::ElementModes::READWRITE), + uno::UNO_QUERY); +} + +void EPUBPackage::insertBinaryData(const librevenge::RVNGBinaryData& rData) +{ + assert(mxOutputStream.is()); + + if (rData.empty()) + return; + + uno::Sequence aData(reinterpret_cast(rData.getDataBuffer()), + rData.size()); + mxOutputStream->writeBytes(aData); +} + +void EPUBPackage::closeBinaryFile() +{ + assert(mxOutputStream.is()); + + uno::Reference xTransactedObject(mxOutputStream, uno::UNO_QUERY); + xTransactedObject->commit(); + mxOutputStream.clear(); +} + +void EPUBPackage::openTextFile(const char* pName) +{ + SAL_WARN("writerperfect", "EPUBPackage::openTextFile, " << pName << ": implement me"); +} + +void EPUBPackage::insertText(const librevenge::RVNGString& /*rCharacters*/) +{ + SAL_WARN("writerperfect", "EPUBPackage::insertText: implement me"); +} + +void EPUBPackage::insertLineBreak() +{ + SAL_WARN("writerperfect", "EPUBPackage::insertLineBreak: implement me"); +} + +void EPUBPackage::closeTextFile() +{ + SAL_WARN("writerperfect", "EPUBPackage::closeTextFile: implement me"); +} + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/EPUBPackage.hxx b/writerperfect/source/writer/EPUBPackage.hxx new file mode 100644 index 000000000..726d20673 --- /dev/null +++ b/writerperfect/source/writer/EPUBPackage.hxx @@ -0,0 +1,90 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +namespace com::sun::star +{ +namespace beans +{ +struct PropertyValue; +} +namespace embed +{ +class XHierarchicalStorageAccess; +} +namespace io +{ +class XOutputStream; +} +namespace uno +{ +class XComponentContext; +} +namespace xml::sax +{ +class XWriter; +} +} + +namespace writerperfect +{ +/// The epub package has direct access to the resulting ZIP file. +class EPUBPackage : public libepubgen::EPUBPackage +{ + css::uno::Reference mxContext; + css::uno::Reference mxStorage; + css::uno::Reference mxOutputStream; + css::uno::Reference mxOutputWriter; + +public: + explicit EPUBPackage(css::uno::Reference xContext, + const css::uno::Sequence& rDescriptor); + + ~EPUBPackage() override; + + void openXMLFile(const char* pName) override; + + void openElement(const char* pName, const librevenge::RVNGPropertyList& rAttributes) override; + void closeElement(const char* pName) override; + + void insertCharacters(const librevenge::RVNGString& rCharacters) override; + + void closeXMLFile() override; + + void openCSSFile(const char* pName) override; + + void insertRule(const librevenge::RVNGString& rSelector, + const librevenge::RVNGPropertyList& rProperties) override; + + void closeCSSFile() override; + + void openBinaryFile(const char* pName) override; + + void insertBinaryData(const librevenge::RVNGBinaryData& rData) override; + + void closeBinaryFile() override; + + void openTextFile(const char* pName) override; + + void insertText(const librevenge::RVNGString& rCharacters) override; + + void insertLineBreak() override; + + void closeTextFile() override; +}; + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/MSWorksImportFilter.cxx b/writerperfect/source/writer/MSWorksImportFilter.cxx new file mode 100644 index 000000000..e79120408 --- /dev/null +++ b/writerperfect/source/writer/MSWorksImportFilter.cxx @@ -0,0 +1,157 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MSWorksImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include +#include + +#include + +#include +#include +#include "MSWorksImportFilter.hxx" +#include + +static bool handleEmbeddedWKSObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return libwps::WPSDocument::parse(data.getDataStream(), &exporter) == libwps::WPS_OK; +} + +bool MSWorksImportFilter::doImportDocument(weld::Window* pParent, + librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, + utl::MediaDescriptor& mediaDescriptor) +{ + libwps::WPSKind kind = libwps::WPS_TEXT; + libwps::WPSCreator creator; + bool needEncoding = false; + const libwps::WPSConfidence confidence + = libwps::WPSDocument::isFileFormatSupported(&rInput, kind, creator, needEncoding); + + std::string fileEncoding; + if ((kind == libwps::WPS_TEXT) && (confidence == libwps::WPS_CONFIDENCE_EXCELLENT) + && needEncoding) + { + OUString encoding; + // first check if we can find the encoding in the filter options (headless mode) + mediaDescriptor[utl::MediaDescriptor::PROP_FILTEROPTIONS] >>= encoding; + if (!encoding.isEmpty()) // TODO: check if the encoding string is valid + fileEncoding = encoding.toUtf8().getStr(); + else + { + OUString title; + + switch (creator) + { + case libwps::WPS_MSWORKS: + title = WpResId(STR_ENCODING_DIALOG_TITLE_MSWORKS); + encoding = "CP850"; + break; + case libwps::WPS_RESERVED_0: // MS Write + title = WpResId(STR_ENCODING_DIALOG_TITLE_MSWRITE); + encoding = "CP1252"; + break; + case libwps::WPS_RESERVED_1: // DosWord + title = WpResId(STR_ENCODING_DIALOG_TITLE_DOSWORD); + encoding = "CP850"; + break; + default: + title = WpResId(STR_ENCODING_DIALOG_TITLE); + encoding = "CP850"; + break; + } + + fileEncoding = encoding.toUtf8().getStr(); // set default to the proposed encoding + try + { + writerperfect::WPFTEncodingDialog aDlg(pParent, title, encoding); + if (aDlg.run() == RET_OK) + { + if (!aDlg.GetEncoding().isEmpty()) + fileEncoding = aDlg.GetEncoding().toUtf8().getStr(); + } + // we can fail because we are in headless mode, the user has cancelled conversion, ... + else if (aDlg.hasUserCalledCancel()) + return false; + } + catch (css::uno::Exception&) + { + TOOLS_WARN_EXCEPTION("writerperfect", "ignoring"); + } + } + } + return libwps::WPS_OK + == libwps::WPSDocument::parse(&rInput, &rGenerator, "", fileEncoding.c_str()); +} + +bool MSWorksImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + libwps::WPSKind kind = libwps::WPS_TEXT; + libwps::WPSCreator creator; + bool needEncoding; + const libwps::WPSConfidence confidence + = libwps::WPSDocument::isFileFormatSupported(&rInput, kind, creator, needEncoding); + + if ((kind == libwps::WPS_TEXT) && (confidence == libwps::WPS_CONFIDENCE_EXCELLENT)) + { + switch (creator) + { + case libwps::WPS_MSWORKS: + rTypeName = "writer_MS_Works_Document"; + break; + case libwps::WPS_RESERVED_0: + rTypeName = "writer_MS_Write"; + break; + case libwps::WPS_RESERVED_1: + rTypeName = "writer_DosWord"; + break; + case libwps::WPS_RESERVED_4: + rTypeName = "writer_PocketWord_File"; + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void MSWorksImportFilter::doRegisterHandlers(OdtGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/wks-ods", &handleEmbeddedWKSObject); +} + +// XServiceInfo +OUString SAL_CALL MSWorksImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Writer.MSWorksImportFilter"; +} + +sal_Bool SAL_CALL MSWorksImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL MSWorksImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Writer_MSWorksImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MSWorksImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/MSWorksImportFilter.hxx b/writerperfect/source/writer/MSWorksImportFilter.hxx new file mode 100644 index 000000000..629904fda --- /dev/null +++ b/writerperfect/source/writer/MSWorksImportFilter.hxx @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MSWorksImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MSWorksImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdtGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/MWAWImportFilter.cxx b/writerperfect/source/writer/MWAWImportFilter.cxx new file mode 100644 index 000000000..33fe2d95f --- /dev/null +++ b/writerperfect/source/writer/MWAWImportFilter.cxx @@ -0,0 +1,117 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* MWAWImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "MWAWImportFilter.hxx" + +static bool handleEmbeddedMWAWGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedMWAWSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + exporter.addDocumentHandler(pHandler, streamType); + return MWAWDocument::decodeSpreadsheet(data, &exporter); +} + +bool MWAWImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) +{ + return MWAWDocument::MWAW_R_OK == MWAWDocument::parse(&rInput, &rGenerator); +} + +bool MWAWImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + rTypeName.clear(); + + MWAWDocument::Type docType = MWAWDocument::MWAW_T_UNKNOWN; + MWAWDocument::Kind docKind = MWAWDocument::MWAW_K_UNKNOWN; + const MWAWDocument::Confidence confidence + = MWAWDocument::isFileFormatSupported(&rInput, docType, docKind); + + if (confidence == MWAWDocument::MWAW_C_EXCELLENT) + { + if (docKind == MWAWDocument::MWAW_K_TEXT) + { + switch (docType) + { + case MWAWDocument::MWAW_T_CLARISWORKS: + rTypeName = "writer_ClarisWorks"; + break; + case MWAWDocument::MWAW_T_MACWRITE: + case MWAWDocument::MWAW_T_MACWRITEPRO: + rTypeName = "writer_MacWrite"; + break; + case MWAWDocument::MWAW_T_MARINERWRITE: + rTypeName = "writer_Mariner_Write"; + break; + case MWAWDocument::MWAW_T_MICROSOFTWORD: + rTypeName = "writer_Mac_Word"; + break; + case MWAWDocument::MWAW_T_MICROSOFTWORKS: + rTypeName = "writer_Mac_Works"; + break; + case MWAWDocument::MWAW_T_WRITENOW: + rTypeName = "writer_WriteNow"; + break; + default: + rTypeName = "MWAW_Text_Document"; + break; + } + } + } + + return !rTypeName.isEmpty(); +} + +void MWAWImportFilter::doRegisterHandlers(OdtGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/mwaw-ods", + &handleEmbeddedMWAWSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL MWAWImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Writer.MWAWImportFilter"; +} + +sal_Bool SAL_CALL MWAWImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL MWAWImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Writer_MWAWImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new MWAWImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/MWAWImportFilter.hxx b/writerperfect/source/writer/MWAWImportFilter.hxx new file mode 100644 index 000000000..b7bb19268 --- /dev/null +++ b/writerperfect/source/writer/MWAWImportFilter.hxx @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class MWAWImportFilter : public writerperfect::ImportFilter +{ +public: + explicit MWAWImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdtGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/PagesImportFilter.cxx b/writerperfect/source/writer/PagesImportFilter.cxx new file mode 100644 index 000000000..9d8bb5eb3 --- /dev/null +++ b/writerperfect/source/writer/PagesImportFilter.cxx @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* PagesImportFilter: Sets up the filter, and calls DocumentCollector + * to do the actual filtering + * + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include "PagesImportFilter.hxx" + +using libetonyek::EtonyekDocument; + +bool PagesImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) +{ + return EtonyekDocument::parse(&rInput, &rGenerator); +} + +bool PagesImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) +{ + EtonyekDocument::Type type = EtonyekDocument::TYPE_UNKNOWN; + const EtonyekDocument::Confidence confidence = EtonyekDocument::isSupported(&rInput, &type); + if ((confidence == EtonyekDocument::CONFIDENCE_EXCELLENT) + && (type == EtonyekDocument::TYPE_PAGES)) + { + rTypeName = "writer_ApplePages"; + return true; + } + + return false; +} + +// XServiceInfo +OUString SAL_CALL PagesImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Writer.PagesImportFilter"; +} + +sal_Bool SAL_CALL PagesImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL PagesImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Writer_PagesImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new PagesImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/PagesImportFilter.hxx b/writerperfect/source/writer/PagesImportFilter.hxx new file mode 100644 index 000000000..83fc04618 --- /dev/null +++ b/writerperfect/source/writer/PagesImportFilter.hxx @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class PagesImportFilter : public writerperfect::ImportFilter +{ +public: + explicit PagesImportFilter(const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, + utl::MediaDescriptor& rDescriptor) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/StarOfficeWriterImportFilter.cxx b/writerperfect/source/writer/StarOfficeWriterImportFilter.cxx new file mode 100644 index 000000000..849ede0d7 --- /dev/null +++ b/writerperfect/source/writer/StarOfficeWriterImportFilter.cxx @@ -0,0 +1,128 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include + +#include + +#include "StarOfficeWriterImportFilter.hxx" + +using com::sun::star::uno::Sequence; +using com::sun::star::uno::XComponentContext; +using com::sun::star::uno::XInterface; + +static bool handleEmbeddedSTOFFWriterGraphicObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeGraphic(data, &exporter); +} + +static bool handleEmbeddedSTOFFWriterSpreadsheetObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, + const OdfStreamType streamType) +{ + OdsGenerator exporter; + exporter.registerEmbeddedObjectHandler("image/stoff-odg", + &handleEmbeddedSTOFFWriterGraphicObject); + exporter.addDocumentHandler(pHandler, streamType); + return STOFFDocument::decodeSpreadsheet(data, &exporter); +} + +bool StarOfficeWriterImportFilter::doImportDocument(weld::Window* pParent, + librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) +{ + STOFFDocument::Kind docKind = STOFFDocument::STOFF_K_UNKNOWN; + const STOFFDocument::Confidence confidence + = STOFFDocument::isFileFormatSupported(&rInput, docKind); + OString aUtf8Passwd; + if (confidence == STOFFDocument::STOFF_C_SUPPORTED_ENCRYPTION) + { + // try to ask for a password + try + { + SfxPasswordDialog aPasswdDlg(pParent); + aPasswdDlg.SetMinLen(0); + if (!aPasswdDlg.run()) + return false; + OUString aPasswd = aPasswdDlg.GetPassword(); + aUtf8Passwd = OUStringToOString(aPasswd, RTL_TEXTENCODING_UTF8); + } + catch (...) + { + // ok, we will probably guess it + } + } + return STOFFDocument::STOFF_R_OK + == STOFFDocument::parse(&rInput, &rGenerator, + !aUtf8Passwd.isEmpty() ? aUtf8Passwd.getStr() : nullptr); +} + +bool StarOfficeWriterImportFilter::doDetectFormat(librevenge::RVNGInputStream& rInput, + OUString& rTypeName) +{ + rTypeName.clear(); + + STOFFDocument::Kind docKind = STOFFDocument::STOFF_K_UNKNOWN; + const STOFFDocument::Confidence confidence + = STOFFDocument::isFileFormatSupported(&rInput, docKind); + + if (confidence == STOFFDocument::STOFF_C_EXCELLENT + || confidence == STOFFDocument::STOFF_C_SUPPORTED_ENCRYPTION) + { + switch (docKind) + { + case STOFFDocument::STOFF_K_TEXT: + rTypeName = "StarOffice_Writer"; + break; + default: + break; + } + } + + return !rTypeName.isEmpty(); +} + +void StarOfficeWriterImportFilter::doRegisterHandlers(OdtGenerator& rGenerator) +{ + rGenerator.registerEmbeddedObjectHandler("image/stoff-odg", + &handleEmbeddedSTOFFWriterGraphicObject); + rGenerator.registerEmbeddedObjectHandler("image/stoff-ods", + &handleEmbeddedSTOFFWriterSpreadsheetObject); +} + +// XServiceInfo +OUString SAL_CALL StarOfficeWriterImportFilter::getImplementationName() +{ + return "org.libreoffice.comp.Writer.StarOfficeWriterImportFilter"; +} + +sal_Bool SAL_CALL StarOfficeWriterImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +Sequence SAL_CALL StarOfficeWriterImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +org_libreoffice_comp_Writer_StarOfficeWriterImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new StarOfficeWriterImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/StarOfficeWriterImportFilter.hxx b/writerperfect/source/writer/StarOfficeWriterImportFilter.hxx new file mode 100644 index 000000000..8310f1cbf --- /dev/null +++ b/writerperfect/source/writer/StarOfficeWriterImportFilter.hxx @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class StarOfficeWriterImportFilter : public writerperfect::ImportFilter +{ +public: + explicit StarOfficeWriterImportFilter( + const css::uno::Reference& rxContext) + : writerperfect::ImportFilter(rxContext) + { + } + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; + +private: + virtual bool doDetectFormat(librevenge::RVNGInputStream& rInput, OUString& rTypeName) override; + virtual bool doImportDocument(weld::Window* pParent, librevenge::RVNGInputStream& rInput, + OdtGenerator& rGenerator, utl::MediaDescriptor&) override; + virtual void doRegisterHandlers(OdtGenerator& rGenerator) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/WordPerfectImportFilter.cxx b/writerperfect/source/writer/WordPerfectImportFilter.cxx new file mode 100644 index 000000000..46e3241ee --- /dev/null +++ b/writerperfect/source/writer/WordPerfectImportFilter.cxx @@ -0,0 +1,238 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "WordPerfectImportFilter.hxx" + +using com::sun::star::uno::Reference; + +using com::sun::star::awt::XWindow; +using com::sun::star::document::XImporter; +using com::sun::star::io::XInputStream; +using com::sun::star::xml::sax::XFastDocumentHandler; + +using writerperfect::DocumentHandler; +using writerperfect::WPXSvInputStream; + +static bool handleEmbeddedWPGObject(const librevenge::RVNGBinaryData& data, + OdfDocumentHandler* pHandler, const OdfStreamType streamType) +{ + OdgGenerator exporter; + exporter.addDocumentHandler(pHandler, streamType); + + libwpg::WPGFileFormat fileFormat = libwpg::WPG_AUTODETECT; + + if (!libwpg::WPGraphics::isSupported(data.getDataStream())) + fileFormat = libwpg::WPG_WPG1; + + return libwpg::WPGraphics::parse(data.getDataStream(), &exporter, fileFormat); +} + +static bool handleEmbeddedWPGImage(const librevenge::RVNGBinaryData& input, + librevenge::RVNGBinaryData& output) +{ + libwpg::WPGFileFormat fileFormat = libwpg::WPG_AUTODETECT; + + if (!libwpg::WPGraphics::isSupported(input.getDataStream())) + fileFormat = libwpg::WPG_WPG1; + + librevenge::RVNGStringVector svgOutput; + librevenge::RVNGSVGDrawingGenerator aSVGGenerator(svgOutput, ""); + + if (!libwpg::WPGraphics::parse(input.getDataStream(), &aSVGGenerator, fileFormat)) + return false; + + if (svgOutput.empty()) + return false; + + assert(1 == svgOutput.size()); + + output.clear(); + output.append(reinterpret_cast(svgOutput[0].cstr()), svgOutput[0].size()); + return true; +} + +bool WordPerfectImportFilter::importImpl( + const css::uno::Sequence& aDescriptor) +{ + Reference xInputStream; + Reference xDialogParent; + for (const auto& rValue : aDescriptor) + { + if (rValue.Name == "InputStream") + rValue.Value >>= xInputStream; + else if (rValue.Name == "ParentWindow") + rValue.Value >>= xDialogParent; + } + if (!xInputStream.is()) + { + OSL_ASSERT(false); + return false; + } + + WPXSvInputStream input(xInputStream); + + OString aUtf8Passwd; + + libwpd::WPDConfidence confidence = libwpd::WPDocument::isFileFormatSupported(&input); + + if (libwpd::WPD_CONFIDENCE_SUPPORTED_ENCRYPTION == confidence) + { + int unsuccessfulAttempts = 0; + while (true) + { + SfxPasswordDialog aPasswdDlg(Application::GetFrameWeld(xDialogParent)); + aPasswdDlg.SetMinLen(0); + if (!aPasswdDlg.run()) + return false; + OUString aPasswd = aPasswdDlg.GetPassword(); + aUtf8Passwd = OUStringToOString(aPasswd, RTL_TEXTENCODING_UTF8); + if (libwpd::WPD_PASSWORD_MATCH_OK + == libwpd::WPDocument::verifyPassword(&input, aUtf8Passwd.getStr())) + break; + else + unsuccessfulAttempts++; + if (unsuccessfulAttempts == 3) // timeout after 3 password attempts + return false; + } + } + + // An XML import service: what we push sax messages to. + Reference xInternalFilter + = mxContext->getServiceManager()->createInstanceWithContext( + "com.sun.star.comp.Writer.XMLOasisImporter", mxContext); + assert(xInternalFilter); + css::uno::Reference xInternalHandler(xInternalFilter, + css::uno::UNO_QUERY); + assert(xInternalHandler); + + // The XImporter sets up an empty target document for XDocumentHandler to write to. + Reference xImporter(xInternalHandler, css::uno::UNO_QUERY); + xImporter->setTargetDocument(mxDoc); + + // OO Document Handler: abstract class to handle document SAX messages, concrete implementation here + // writes to in-memory target doc + DocumentHandler aHandler( + new SvXMLLegacyToFastDocHandler(static_cast(xInternalHandler.get()))); + + OdtGenerator collector; + collector.addDocumentHandler(&aHandler, ODF_FLAT_XML); + collector.registerEmbeddedObjectHandler("image/x-wpg", &handleEmbeddedWPGObject); + collector.registerEmbeddedImageHandler("image/x-wpg", &handleEmbeddedWPGImage); + return libwpd::WPD_OK + == libwpd::WPDocument::parse(&input, &collector, + aUtf8Passwd.isEmpty() ? nullptr : aUtf8Passwd.getStr()); +} + +sal_Bool SAL_CALL +WordPerfectImportFilter::filter(const css::uno::Sequence& aDescriptor) +{ + return importImpl(aDescriptor); +} +void SAL_CALL WordPerfectImportFilter::cancel() {} + +// XImporter +void SAL_CALL +WordPerfectImportFilter::setTargetDocument(const Reference& xDoc) +{ + mxDoc = xDoc; +} + +// XExtendedFilterDetection +OUString SAL_CALL +WordPerfectImportFilter::detect(css::uno::Sequence& Descriptor) +{ + libwpd::WPDConfidence confidence = libwpd::WPD_CONFIDENCE_NONE; + OUString sTypeName; + sal_Int32 nLength = Descriptor.getLength(); + sal_Int32 location = nLength; + const css::beans::PropertyValue* pValue = Descriptor.getConstArray(); + Reference xInputStream; + for (sal_Int32 i = 0; i < nLength; i++) + { + if (pValue[i].Name == "TypeName") + location = i; + else if (pValue[i].Name == "InputStream") + pValue[i].Value >>= xInputStream; + } + + if (!xInputStream.is()) + return OUString(); + + WPXSvInputStream input(xInputStream); + + confidence = libwpd::WPDocument::isFileFormatSupported(&input); + + if (confidence == libwpd::WPD_CONFIDENCE_EXCELLENT + || confidence == libwpd::WPD_CONFIDENCE_SUPPORTED_ENCRYPTION) + sTypeName = "writer_WordPerfect_Document"; + + if (!sTypeName.isEmpty()) + { + if (location == nLength) + { + Descriptor.realloc(nLength + 1); + Descriptor.getArray()[location].Name = "TypeName"; + } + + Descriptor.getArray()[location].Value <<= sTypeName; + } + + return sTypeName; +} + +// XInitialization +void SAL_CALL +WordPerfectImportFilter::initialize(const css::uno::Sequence& /*aArguments*/) +{ +} + +// XServiceInfo +OUString SAL_CALL WordPerfectImportFilter::getImplementationName() +{ + return "com.sun.star.comp.Writer.WordPerfectImportFilter"; +} + +sal_Bool SAL_CALL WordPerfectImportFilter::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +css::uno::Sequence SAL_CALL WordPerfectImportFilter::getSupportedServiceNames() +{ + return { "com.sun.star.document.ImportFilter", "com.sun.star.document.ExtendedTypeDetection" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_Writer_WordPerfectImportFilter_get_implementation( + css::uno::XComponentContext* const context, const css::uno::Sequence&) +{ + return cppu::acquire(new WordPerfectImportFilter(context)); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/WordPerfectImportFilter.hxx b/writerperfect/source/writer/WordPerfectImportFilter.hxx new file mode 100644 index 000000000..a9fc331ae --- /dev/null +++ b/writerperfect/source/writer/WordPerfectImportFilter.hxx @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +/* "This product is not manufactured, approved, or supported by + * Corel Corporation or Corel Corporation Limited." + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +/* This component will be instantiated for both import or export. Whether it calls + * setSourceDocument or setTargetDocument determines which Impl function the filter + * member calls */ +class WordPerfectImportFilter + : public cppu::WeakImplHelper +{ + css::uno::Reference mxContext; + css::uno::Reference mxDoc; + + /// @throws css::uno::RuntimeException + bool importImpl(const css::uno::Sequence& aDescriptor); + +public: + explicit WordPerfectImportFilter( + const css::uno::Reference& rxContext) + : mxContext(rxContext) + { + } + + // XFilter + virtual sal_Bool SAL_CALL + filter(const css::uno::Sequence& aDescriptor) override; + virtual void SAL_CALL cancel() override; + + // XImporter + virtual void SAL_CALL + setTargetDocument(const css::uno::Reference& xDoc) override; + + //XExtendedFilterDetection + virtual OUString SAL_CALL + detect(css::uno::Sequence& Descriptor) override; + + // XInitialization + virtual void SAL_CALL initialize(const css::uno::Sequence& aArguments) override; + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLBase64ImportContext.cxx b/writerperfect/source/writer/exp/XMLBase64ImportContext.cxx new file mode 100644 index 000000000..a7780e2d5 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLBase64ImportContext.cxx @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "XMLBase64ImportContext.hxx" + +#include + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLBase64ImportContext::XMLBase64ImportContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +void XMLBase64ImportContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ +} + +void XMLBase64ImportContext::endElement(const OUString& /*rName*/) +{ + m_aBinaryData.append(static_cast(m_aStream.GetData()), + m_aStream.GetSize()); +} + +void XMLBase64ImportContext::characters(const OUString& rChars) +{ + OUString aTrimmedChars(rChars.trim()); + + if (aTrimmedChars.isEmpty()) + return; + + OUString aChars; + if (!m_aBase64CharsLeft.isEmpty()) + { + aChars = m_aBase64CharsLeft + aTrimmedChars; + m_aBase64CharsLeft.clear(); + } + else + aChars = aTrimmedChars; + + uno::Sequence aBuffer((aChars.getLength() / 4) * 3); + const sal_Int32 nCharsDecoded = comphelper::Base64::decodeSomeChars(aBuffer, aChars); + m_aStream.WriteBytes(aBuffer.getArray(), aBuffer.getLength()); + if (nCharsDecoded != aChars.getLength()) + m_aBase64CharsLeft = aChars.copy(nCharsDecoded); +} + +const librevenge::RVNGBinaryData& XMLBase64ImportContext::getBinaryData() const +{ + return m_aBinaryData; +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLBase64ImportContext.hxx b/writerperfect/source/writer/exp/XMLBase64ImportContext.hxx new file mode 100644 index 000000000..59558746f --- /dev/null +++ b/writerperfect/source/writer/exp/XMLBase64ImportContext.hxx @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLBase64ImportContext : public XMLImportContext +{ +public: + XMLBase64ImportContext(XMLImport& rImport); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + void SAL_CALL characters(const OUString& rChars) override; + + const librevenge::RVNGBinaryData& getBinaryData() const; + +private: + librevenge::RVNGBinaryData m_aBinaryData; + SvMemoryStream m_aStream; + OUString m_aBase64CharsLeft; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLFootnoteImportContext.cxx b/writerperfect/source/writer/exp/XMLFootnoteImportContext.cxx new file mode 100644 index 000000000..cdc08c50b --- /dev/null +++ b/writerperfect/source/writer/exp/XMLFootnoteImportContext.cxx @@ -0,0 +1,126 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "XMLFootnoteImportContext.hxx" + +#include "xmlimp.hxx" +#include "xmltext.hxx" + +#include + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +namespace +{ +/// Handler for . +class XMLTextNoteCitationContext : public XMLImportContext +{ +public: + XMLTextNoteCitationContext(XMLImport& rImport, librevenge::RVNGPropertyList& rProperties); + + void SAL_CALL characters(const OUString& rCharacters) override; + void SAL_CALL endElement(const OUString& rName) override; + +private: + librevenge::RVNGPropertyList& m_rProperties; + OUString m_aCharacters; +}; +} + +XMLTextNoteCitationContext::XMLTextNoteCitationContext(XMLImport& rImport, + librevenge::RVNGPropertyList& rProperties) + : XMLImportContext(rImport) + , m_rProperties(rProperties) +{ +} + +void XMLTextNoteCitationContext::endElement(const OUString& /*rName*/) +{ + m_rProperties.insert("librevenge:number", m_aCharacters.toUtf8().getStr()); +} + +void XMLTextNoteCitationContext::characters(const OUString& rCharacters) +{ + m_aCharacters += rCharacters; +} + +namespace +{ +/// Handler for . +class XMLFootnoteBodyImportContext : public XMLImportContext +{ +public: + XMLFootnoteBodyImportContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rProperties); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + +private: + const librevenge::RVNGPropertyList& m_rProperties; +}; +} + +XMLFootnoteBodyImportContext::XMLFootnoteBodyImportContext( + XMLImport& rImport, const librevenge::RVNGPropertyList& rProperties) + : XMLImportContext(rImport) + , m_rProperties(rProperties) +{ +} + +rtl::Reference XMLFootnoteBodyImportContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateTextChildContext(GetImport(), rName); +} + +void XMLFootnoteBodyImportContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ + GetImport().GetGenerator().openFootnote(m_rProperties); +} + +void XMLFootnoteBodyImportContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeFootnote(); +} + +XMLFootnoteImportContext::XMLFootnoteImportContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLFootnoteImportContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "text:note-citation") + return new XMLTextNoteCitationContext(GetImport(), m_aProperties); + if (rName == "text:note-body") + return new XMLFootnoteBodyImportContext(GetImport(), m_aProperties); + SAL_WARN("writerperfect", "XMLFootnoteImportContext::CreateChildContext: unhandled " << rName); + return nullptr; +} + +void XMLFootnoteImportContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ +} +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLFootnoteImportContext.hxx b/writerperfect/source/writer/exp/XMLFootnoteImportContext.hxx new file mode 100644 index 000000000..50011d388 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLFootnoteImportContext.hxx @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLFootnoteImportContext : public XMLImportContext +{ +public: + XMLFootnoteImportContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + librevenge::RVNGPropertyList m_aProperties; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLSectionContext.cxx b/writerperfect/source/writer/exp/XMLSectionContext.cxx new file mode 100644 index 000000000..839400e52 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLSectionContext.cxx @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "XMLSectionContext.hxx" + +#include "xmlimp.hxx" +#include "xmltext.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLSectionContext::XMLSectionContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLSectionContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateTextChildContext(GetImport(), rName); +} + +void XMLSectionContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ + GetImport().GetGenerator().openSection(librevenge::RVNGPropertyList()); +} + +void XMLSectionContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeSection(); +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLSectionContext.hxx b/writerperfect/source/writer/exp/XMLSectionContext.hxx new file mode 100644 index 000000000..6a1f1e58a --- /dev/null +++ b/writerperfect/source/writer/exp/XMLSectionContext.hxx @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLSectionContext : public XMLImportContext +{ +public: + XMLSectionContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLTextFrameContext.cxx b/writerperfect/source/writer/exp/XMLTextFrameContext.cxx new file mode 100644 index 000000000..4c6ca118e --- /dev/null +++ b/writerperfect/source/writer/exp/XMLTextFrameContext.cxx @@ -0,0 +1,171 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "XMLTextFrameContext.hxx" + +#include "XMLBase64ImportContext.hxx" +#include "txtparai.hxx" +#include "xmlimp.hxx" +#include "xmltext.hxx" + +#include + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +namespace +{ +/// Handler for . +class XMLTextBoxContext : public XMLImportContext +{ +public: + XMLTextBoxContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; +}; +} + +XMLTextBoxContext::XMLTextBoxContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLTextBoxContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateTextChildContext(GetImport(), rName); +} + +void XMLTextBoxContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ + GetImport().GetGenerator().openTextBox(librevenge::RVNGPropertyList()); +} + +void XMLTextBoxContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeTextBox(); +} + +namespace +{ +/// Handler for . +class XMLTextImageContext : public XMLImportContext +{ +public: + XMLTextImageContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + +private: + OString m_aMimeType; + rtl::Reference m_xBinaryData; +}; +} + +XMLTextImageContext::XMLTextImageContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLTextImageContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "office:binary-data") + { + m_xBinaryData = new XMLBase64ImportContext(GetImport()); + return m_xBinaryData; + } + return nullptr; +} + +void XMLTextImageContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + if (rAttributeName == "loext:mime-type" || rAttributeName == "draw:mime-type") + m_aMimeType = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + } +} + +void XMLTextImageContext::endElement(const OUString& /*rName*/) +{ + librevenge::RVNGPropertyList aPropertyList; + + aPropertyList.insert("librevenge:mime-type", m_aMimeType.getStr()); + if (m_xBinaryData.is()) + aPropertyList.insert("office:binary-data", m_xBinaryData->getBinaryData()); + + GetImport().GetGenerator().insertBinaryObject(aPropertyList); +} + +XMLTextFrameContext::XMLTextFrameContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLTextFrameContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "draw:image") + return new XMLTextImageContext(GetImport()); + if (rName == "draw:text-box") + return new XMLTextBoxContext(GetImport()); + SAL_WARN("writerperfect", "XMLTextFrameContext::CreateChildContext: unhandled " << rName); + return nullptr; +} + +void XMLTextFrameContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + + if (rAttributeName == "draw:style-name") + FillStyles(rAttributeValue, GetImport().GetAutomaticGraphicStyles(), + GetImport().GetGraphicStyles(), aPropertyList); + else + { + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } + GetImport().GetGenerator().openFrame(aPropertyList); +} + +void XMLTextFrameContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeFrame(); +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLTextFrameContext.hxx b/writerperfect/source/writer/exp/XMLTextFrameContext.hxx new file mode 100644 index 000000000..9c58849e6 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLTextFrameContext.hxx @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +class XMLBase64ImportContext; + +/// Handler for . +class XMLTextFrameContext : public XMLImportContext +{ +public: + XMLTextFrameContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLTextListContext.cxx b/writerperfect/source/writer/exp/XMLTextListContext.cxx new file mode 100644 index 000000000..8798c9a39 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLTextListContext.cxx @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "XMLTextListContext.hxx" + +#include "XMLTextListItemContext.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLTextListContext::XMLTextListContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLTextListContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "text:list-item") + return new XMLTextListItemContext(GetImport()); + return nullptr; +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLTextListContext.hxx b/writerperfect/source/writer/exp/XMLTextListContext.hxx new file mode 100644 index 000000000..8a384d7ba --- /dev/null +++ b/writerperfect/source/writer/exp/XMLTextListContext.hxx @@ -0,0 +1,29 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLTextListContext : public XMLImportContext +{ +public: + XMLTextListContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLTextListItemContext.cxx b/writerperfect/source/writer/exp/XMLTextListItemContext.cxx new file mode 100644 index 000000000..36f3f2ce6 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLTextListItemContext.cxx @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "XMLTextListItemContext.hxx" + +#include "XMLTextListContext.hxx" +#include "txtparai.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLTextListItemContext::XMLTextListItemContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLTextListItemContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "text:p" || rName == "text:h") + return new XMLParaContext(GetImport()); + if (rName == "text:list") + return new XMLTextListContext(GetImport()); + return nullptr; +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/XMLTextListItemContext.hxx b/writerperfect/source/writer/exp/XMLTextListItemContext.hxx new file mode 100644 index 000000000..2f17194d4 --- /dev/null +++ b/writerperfect/source/writer/exp/XMLTextListItemContext.hxx @@ -0,0 +1,29 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLTextListItemContext : public XMLImportContext +{ +public: + XMLTextListItemContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/txtparai.cxx b/writerperfect/source/writer/exp/txtparai.cxx new file mode 100644 index 000000000..101546c39 --- /dev/null +++ b/writerperfect/source/writer/exp/txtparai.cxx @@ -0,0 +1,634 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include "txtparai.hxx" + +#include + +#include "XMLFootnoteImportContext.hxx" +#include "XMLTextFrameContext.hxx" +#include "xmlimp.hxx" + +#include + +using namespace com::sun::star; + +namespace +{ +/// Looks for rName in rStyles and fills rPropertyList based on that +/// (rAutomaticStyles and rNamedStyles are a list of possible parents). +void FillStyle(const OUString& rName, std::map& rStyles, + std::map& rAutomaticStyles, + std::map& rNamedStyles, + librevenge::RVNGPropertyList& rPropertyList) +{ + auto itStyle = rStyles.find(rName); + if (itStyle == rStyles.end()) + return; + + const librevenge::RVNGPropertyList& rStyle = itStyle->second; + if (rStyle["style:parent-style-name"]) + { + // The style has a parent. + OUString aParent = OStringToOUString(rStyle["style:parent-style-name"]->getStr().cstr(), + RTL_TEXTENCODING_UTF8); + if (!aParent.isEmpty()) + writerperfect::exp::FillStyles(aParent, rAutomaticStyles, rNamedStyles, rPropertyList); + } + + // Apply properties from named style. + librevenge::RVNGPropertyList::Iter itProp(rStyle); + for (itProp.rewind(); itProp.next();) + { + if (std::string_view("style:parent-style-name") != itProp.key()) + rPropertyList.insert(itProp.key(), itProp()->clone()); + } +} +} + +namespace writerperfect::exp +{ +namespace +{ +/// Handler for . +class XMLTextSequenceContext : public XMLImportContext +{ +public: + XMLTextSequenceContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + void SAL_CALL characters(const OUString& rChars) override; + +private: + librevenge::RVNGPropertyList m_aPropertyList; +}; +} + +XMLTextSequenceContext::XMLTextSequenceContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLImportContext(rImport) +{ + // Inherit properties from parent. + librevenge::RVNGPropertyList::Iter itProp(rPropertyList); + for (itProp.rewind(); itProp.next();) + m_aPropertyList.insert(itProp.key(), itProp()->clone()); +} + +void XMLTextSequenceContext::characters(const OUString& rChars) +{ + GetImport().GetGenerator().openSpan(m_aPropertyList); + + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + GetImport().GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); + + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Handler for . +class XMLSpanContext : public XMLImportContext +{ +public: + XMLSpanContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL characters(const OUString& rChars) override; + +private: + librevenge::RVNGPropertyList m_aPropertyList; +}; +} + +XMLSpanContext::XMLSpanContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLImportContext(rImport) +{ + // Inherit properties from parent. + librevenge::RVNGPropertyList::Iter itProp(rPropertyList); + for (itProp.rewind(); itProp.next();) + m_aPropertyList.insert(itProp.key(), itProp()->clone()); +} + +rtl::Reference XMLSpanContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateParagraphOrSpanChildContext(GetImport(), rName, m_aPropertyList); +} + +void XMLSpanContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "text:style-name") + FillStyles(rAttributeValue, GetImport().GetAutomaticTextStyles(), + GetImport().GetTextStyles(), m_aPropertyList); + else + { + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + m_aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } +} + +void XMLSpanContext::characters(const OUString& rChars) +{ + GetImport().GetGenerator().openSpan(m_aPropertyList); + + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + GetImport().GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); + + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Handler for . +class XMLRubyContext : public XMLImportContext +{ +public: + XMLRubyContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL endElement(const OUString& rName) override; + + void SetRubyText(const OUString& rRubyText) { m_sRubyText = rRubyText; } + + OUString& GetRubyBase() { return m_sRubyBase; } + +private: + OUString m_sRubyText; + OUString m_sRubyBase; + librevenge::RVNGPropertyList m_aPropertyList; +}; + +/// Handler for . +class XMLRubyTextContext : public XMLImportContext +{ +public: + XMLRubyTextContext(XMLImport& rImport, XMLRubyContext& rParent) + : XMLImportContext(rImport) + , m_rParent(rParent) + { + } + + void SAL_CALL characters(const OUString& rChars) override { m_rParent.SetRubyText(rChars); } + +private: + XMLRubyContext& m_rParent; +}; + +/// Handler for . +class XMLRubyBaseContext : public XMLImportContext +{ +public: + XMLRubyBaseContext(XMLImport& rImport, XMLRubyContext& rParent) + : XMLImportContext(rImport) + , m_rParent(rParent) + { + } + + void SAL_CALL characters(const OUString& rChars) override { m_rParent.GetRubyBase() += rChars; } + +private: + XMLRubyContext& m_rParent; +}; +} + +XMLRubyContext::XMLRubyContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLImportContext(rImport) +{ + // Inherit properties from parent. + librevenge::RVNGPropertyList::Iter itProp(rPropertyList); + for (itProp.rewind(); itProp.next();) + m_aPropertyList.insert(itProp.key(), itProp()->clone()); +} + +rtl::Reference XMLRubyContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "text:ruby-base") + return new XMLRubyBaseContext(GetImport(), *this); + if (rName == "text:ruby-text") + return new XMLRubyTextContext(GetImport(), *this); + return nullptr; +} + +void XMLRubyContext::endElement(const OUString& /*rName*/) +{ + OString sRubyText = OUStringToOString(m_sRubyText, RTL_TEXTENCODING_UTF8); + OString sRubyBase = OUStringToOString(m_sRubyBase, RTL_TEXTENCODING_UTF8); + if (sRubyText.getLength()) + m_aPropertyList.insert("text:ruby-text", sRubyText.getStr()); + GetImport().GetGenerator().openSpan(m_aPropertyList); + GetImport().GetGenerator().insertText(sRubyBase.getStr()); + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Base class for contexts that represent a single character only. +class XMLCharContext : public XMLImportContext +{ +public: + XMLCharContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + const librevenge::RVNGPropertyList& GetPropertyList() const { return m_aPropertyList; } + +private: + librevenge::RVNGPropertyList m_aPropertyList; +}; +} + +XMLCharContext::XMLCharContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLImportContext(rImport) +{ + // Inherit properties from parent. + librevenge::RVNGPropertyList::Iter itProp(rPropertyList); + for (itProp.rewind(); itProp.next();) + m_aPropertyList.insert(itProp.key(), itProp()->clone()); +} + +namespace +{ +/// Handler for . +class XMLLineBreakContext : public XMLCharContext +{ +public: + XMLLineBreakContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; +}; +} + +XMLLineBreakContext::XMLLineBreakContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLCharContext(rImport, rPropertyList) +{ +} + +void XMLLineBreakContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ + GetImport().GetGenerator().openSpan(GetPropertyList()); + GetImport().GetGenerator().insertLineBreak(); + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Handler for . +class XMLSpaceContext : public XMLCharContext +{ +public: + XMLSpaceContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; +}; +} + +XMLSpaceContext::XMLSpaceContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLCharContext(rImport, rPropertyList) +{ +} + +void XMLSpaceContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ + GetImport().GetGenerator().openSpan(GetPropertyList()); + GetImport().GetGenerator().insertSpace(); + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Handler for . +class XMLTabContext : public XMLCharContext +{ +public: + XMLTabContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; +}; +} + +XMLTabContext::XMLTabContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList) + : XMLCharContext(rImport, rPropertyList) +{ +} + +void XMLTabContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ + GetImport().GetGenerator().openSpan(GetPropertyList()); + GetImport().GetGenerator().insertTab(); + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Handler for . +class XMLTextFrameHyperlinkContext : public XMLImportContext +{ +public: + XMLTextFrameHyperlinkContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList); + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + void SAL_CALL characters(const OUString& rChars) override; + +private: + librevenge::RVNGPropertyList m_aPropertyList; + PopupState m_ePopupState = PopupState::NONE; +}; +} + +XMLTextFrameHyperlinkContext::XMLTextFrameHyperlinkContext( + XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList) + : XMLImportContext(rImport) +{ + // Inherit properties from parent. + librevenge::RVNGPropertyList::Iter itProp(rPropertyList); + for (itProp.rewind(); itProp.next();) + m_aPropertyList.insert(itProp.key(), itProp()->clone()); +} + +rtl::Reference XMLTextFrameHyperlinkContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateParagraphOrSpanChildContext(GetImport(), rName, m_aPropertyList); +} + +void XMLTextFrameHyperlinkContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "text:style-name") + // This affects the nested span's properties. + FillStyles(rAttributeValue, GetImport().GetAutomaticTextStyles(), + GetImport().GetTextStyles(), m_aPropertyList); + else + { + if (rAttributeName == "xlink:href") + { + m_ePopupState = GetImport().FillPopupData(rAttributeValue, aPropertyList); + if (m_ePopupState != PopupState::NotConsumed) + continue; + } + + // This affects the link's properties. + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } + + if (m_ePopupState != PopupState::Ignore) + GetImport().GetGenerator().openLink(aPropertyList); +} + +void XMLTextFrameHyperlinkContext::endElement(const OUString& /*rName*/) +{ + if (m_ePopupState != PopupState::Ignore) + GetImport().GetGenerator().closeLink(); +} + +void XMLTextFrameHyperlinkContext::characters(const OUString& rChars) +{ + GetImport().GetGenerator().openSpan(m_aPropertyList); + + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + GetImport().GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); + + GetImport().GetGenerator().closeSpan(); +} + +namespace +{ +/// Handler for . +class XMLHyperlinkContext : public XMLImportContext +{ +public: + XMLHyperlinkContext(XMLImport& rImport, const librevenge::RVNGPropertyList& rPropertyList); + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + void SAL_CALL characters(const OUString& rChars) override; + +private: + librevenge::RVNGPropertyList m_aPropertyList; + PopupState m_ePopupState = PopupState::NONE; +}; +} + +XMLHyperlinkContext::XMLHyperlinkContext(XMLImport& rImport, + const librevenge::RVNGPropertyList& rPropertyList) + : XMLImportContext(rImport) +{ + // Inherit properties from parent. + librevenge::RVNGPropertyList::Iter itProp(rPropertyList); + for (itProp.rewind(); itProp.next();) + m_aPropertyList.insert(itProp.key(), itProp()->clone()); +} + +rtl::Reference XMLHyperlinkContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateParagraphOrSpanChildContext(GetImport(), rName, m_aPropertyList); +} + +void XMLHyperlinkContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "text:style-name") + // This affects the nested span's properties. + FillStyles(rAttributeValue, GetImport().GetAutomaticTextStyles(), + GetImport().GetTextStyles(), m_aPropertyList); + else + { + if (rAttributeName == "xlink:href") + { + m_ePopupState = GetImport().FillPopupData(rAttributeValue, aPropertyList); + if (m_ePopupState != PopupState::NotConsumed) + continue; + } + + // This affects the link's properties. + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } + + if (m_ePopupState != PopupState::Ignore) + GetImport().GetGenerator().openLink(aPropertyList); +} + +void XMLHyperlinkContext::endElement(const OUString& /*rName*/) +{ + if (m_ePopupState != PopupState::Ignore) + GetImport().GetGenerator().closeLink(); +} + +void XMLHyperlinkContext::characters(const OUString& rChars) +{ + GetImport().GetGenerator().openSpan(m_aPropertyList); + + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + GetImport().GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); + + GetImport().GetGenerator().closeSpan(); +} + +XMLParaContext::XMLParaContext(XMLImport& rImport, bool bTopLevel) + : XMLImportContext(rImport) + , m_bTopLevel(bTopLevel) +{ +} + +rtl::Reference XMLParaContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "text:a") + return new XMLHyperlinkContext(GetImport(), m_aTextPropertyList); + if (rName == "draw:a") + return new XMLTextFrameHyperlinkContext(GetImport(), m_aTextPropertyList); + if (rName == "text:ruby") + return new XMLRubyContext(GetImport(), m_aTextPropertyList); + return CreateParagraphOrSpanChildContext(GetImport(), rName, m_aTextPropertyList); +} + +void XMLParaContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "text:style-name") + { + m_aStyleName = rAttributeValue; + FillStyles(m_aStyleName, GetImport().GetAutomaticParagraphStyles(), + GetImport().GetParagraphStyles(), aPropertyList); + FillStyles(m_aStyleName, GetImport().GetAutomaticTextStyles(), + GetImport().GetTextStyles(), m_aTextPropertyList); + if (m_bTopLevel) + GetImport().HandlePageSpan(aPropertyList); + } + else + { + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } + + GetImport().GetGenerator().openParagraph(aPropertyList); +} + +void XMLParaContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeParagraph(); +} + +void XMLParaContext::characters(const OUString& rChars) +{ + librevenge::RVNGPropertyList aPropertyList; + if (!m_aStyleName.isEmpty()) + FillStyles(m_aStyleName, GetImport().GetAutomaticTextStyles(), GetImport().GetTextStyles(), + aPropertyList); + GetImport().GetGenerator().openSpan(aPropertyList); + + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + GetImport().GetGenerator().insertText(librevenge::RVNGString(sCharU8.getStr())); + + GetImport().GetGenerator().closeSpan(); +} + +rtl::Reference +CreateParagraphOrSpanChildContext(XMLImport& rImport, const OUString& rName, + const librevenge::RVNGPropertyList& rTextPropertyList) +{ + if (rName == "text:span") + return new XMLSpanContext(rImport, rTextPropertyList); + if (rName == "text:line-break") + return new XMLLineBreakContext(rImport, rTextPropertyList); + if (rName == "text:s") + return new XMLSpaceContext(rImport, rTextPropertyList); + if (rName == "text:tab") + return new XMLTabContext(rImport, rTextPropertyList); + if (rName == "draw:frame") + return new XMLTextFrameContext(rImport); + if (rName == "text:sequence") + return new XMLTextSequenceContext(rImport, rTextPropertyList); + if (rName == "text:note") + return new XMLFootnoteImportContext(rImport); + SAL_WARN("writerperfect", "CreateParagraphOrSpanChildContext: unhandled " << rName); + return nullptr; +} + +void FillStyles(const OUString& rName, + std::map& rAutomaticStyles, + std::map& rNamedStyles, + librevenge::RVNGPropertyList& rPropertyList) +{ + FillStyle(rName, rAutomaticStyles, rAutomaticStyles, rNamedStyles, rPropertyList); + FillStyle(rName, rNamedStyles, rAutomaticStyles, rNamedStyles, rPropertyList); +} + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/txtparai.hxx b/writerperfect/source/writer/exp/txtparai.hxx new file mode 100644 index 000000000..e759dc8f5 --- /dev/null +++ b/writerperfect/source/writer/exp/txtparai.hxx @@ -0,0 +1,59 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for /. +class XMLParaContext : public XMLImportContext +{ +public: + XMLParaContext(XMLImport& rImport, bool bTopLevel = false); + + rtl::Reference CreateChildContext( + const OUString& rName, + const css::uno::Reference& /*xAttribs*/) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + void SAL_CALL characters(const OUString& rChars) override; + +private: + OUString m_aStyleName; + /// List of properties spans should inherit from this paragraph. + librevenge::RVNGPropertyList m_aTextPropertyList; + /// If the context is a direct child of XMLBodyContentContext. + /// Only direct child of XMLBodyContentContext has to handle page span. + bool m_bTopLevel; +}; + +/// Shared child context factory for paragraph and span contexts. +rtl::Reference +CreateParagraphOrSpanChildContext(XMLImport& rImport, const OUString& rName, + const librevenge::RVNGPropertyList& rTextPropertyList); + +/// Looks for rName in rAutomaticStyles (and failing that, in rNamedStyles) and +/// fills rPropertyList based on that. +void FillStyles(const OUString& rName, + std::map& rAutomaticStyles, + std::map& rNamedStyles, + librevenge::RVNGPropertyList& rPropertyList); + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/txtstyli.cxx b/writerperfect/source/writer/exp/txtstyli.cxx new file mode 100644 index 000000000..53ac4b4e5 --- /dev/null +++ b/writerperfect/source/writer/exp/txtstyli.cxx @@ -0,0 +1,415 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "txtstyli.hxx" + +#include "xmlfmt.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +namespace +{ +/// Handler for . +class XMLParagraphPropertiesContext : public XMLImportContext +{ +public: + XMLParagraphPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLParagraphPropertiesContext::XMLParagraphPropertiesContext(XMLImport& rImport, + XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLParagraphPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + mrStyle.GetParagraphPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLTextPropertiesContext : public XMLImportContext +{ +public: + XMLTextPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLTextPropertiesContext::XMLTextPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLTextPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + mrStyle.GetTextPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLGraphicPropertiesContext : public XMLImportContext +{ +public: + XMLGraphicPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLGraphicPropertiesContext::XMLGraphicPropertiesContext(XMLImport& rImport, + XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLGraphicPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + mrStyle.GetGraphicPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLPageLayoutPropertiesContext : public XMLImportContext +{ +public: + XMLPageLayoutPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLPageLayoutPropertiesContext::XMLPageLayoutPropertiesContext(XMLImport& rImport, + XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLPageLayoutPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + // We only care about writing-mode for now. + if (sName != "style:writing-mode") + continue; + + mrStyle.GetPageLayoutPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLTablePropertiesContext : public XMLImportContext +{ +public: + XMLTablePropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLTablePropertiesContext::XMLTablePropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLTablePropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + if (sName == "style:rel-width") + // Make sure this is passed through as a string, and not parsed as a double. + mrStyle.GetTablePropertyList().insert( + sName.getStr(), librevenge::RVNGPropertyFactory::newStringProp(sValue.getStr())); + else + mrStyle.GetTablePropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLTableRowPropertiesContext : public XMLImportContext +{ +public: + XMLTableRowPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLTableRowPropertiesContext::XMLTableRowPropertiesContext(XMLImport& rImport, + XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLTableRowPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + mrStyle.GetRowPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLTableColumnPropertiesContext : public XMLImportContext +{ +public: + XMLTableColumnPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLTableColumnPropertiesContext::XMLTableColumnPropertiesContext(XMLImport& rImport, + XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLTableColumnPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + mrStyle.GetColumnPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +namespace +{ +/// Handler for . +class XMLTableCellPropertiesContext : public XMLImportContext +{ +public: + XMLTableCellPropertiesContext(XMLImport& rImport, XMLStyleContext& rStyle); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLStyleContext& mrStyle; +}; +} + +XMLTableCellPropertiesContext::XMLTableCellPropertiesContext(XMLImport& rImport, + XMLStyleContext& rStyle) + : XMLImportContext(rImport) + , mrStyle(rStyle) +{ +} + +void XMLTableCellPropertiesContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + OString sName = OUStringToOString(xAttribs->getNameByIndex(i), RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(xAttribs->getValueByIndex(i), RTL_TEXTENCODING_UTF8); + mrStyle.GetCellPropertyList().insert(sName.getStr(), sValue.getStr()); + } +} + +XMLStyleContext::XMLStyleContext(XMLImport& rImport, XMLStylesContext& rStyles) + : XMLImportContext(rImport) + , m_rStyles(rStyles) +{ +} + +rtl::Reference XMLStyleContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "style:paragraph-properties") + return new XMLParagraphPropertiesContext(GetImport(), *this); + if (rName == "style:text-properties") + return new XMLTextPropertiesContext(GetImport(), *this); + if (rName == "style:table-cell-properties") + return new XMLTableCellPropertiesContext(GetImport(), *this); + if (rName == "style:table-column-properties") + return new XMLTableColumnPropertiesContext(GetImport(), *this); + if (rName == "style:table-row-properties") + return new XMLTableRowPropertiesContext(GetImport(), *this); + if (rName == "style:table-properties") + return new XMLTablePropertiesContext(GetImport(), *this); + if (rName == "style:graphic-properties") + return new XMLGraphicPropertiesContext(GetImport(), *this); + if (rName == "style:page-layout-properties") + return new XMLPageLayoutPropertiesContext(GetImport(), *this); + return nullptr; +} + +void XMLStyleContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "style:name") + m_aName = rAttributeValue; + else if (rAttributeName == "style:family") + m_aFamily = rAttributeValue; + + // Remember properties of the style itself, e.g. parent name. + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + m_aTextPropertyList.insert(sName.getStr(), sValue.getStr()); + m_aParagraphPropertyList.insert(sName.getStr(), sValue.getStr()); + m_aGraphicPropertyList.insert(sName.getStr(), sValue.getStr()); + m_aPageLayoutPropertyList.insert(sName.getStr(), sValue.getStr()); + m_aMasterPagePropertyList.insert(sName.getStr(), sValue.getStr()); + m_aTablePropertyList.insert(sName.getStr(), sValue.getStr()); + } +} + +void XMLStyleContext::endElement(const OUString& rName) +{ + if (m_aName.isEmpty()) + return; + + if (m_aFamily == "text" || m_aFamily == "paragraph") + m_rStyles.GetCurrentTextStyles()[m_aName] = m_aTextPropertyList; + if (m_aFamily == "paragraph") + m_rStyles.GetCurrentParagraphStyles()[m_aName] = m_aParagraphPropertyList; + else if (m_aFamily == "table-cell") + m_rStyles.GetCurrentCellStyles()[m_aName] = m_aCellPropertyList; + else if (m_aFamily == "table-column") + m_rStyles.GetCurrentColumnStyles()[m_aName] = m_aColumnPropertyList; + else if (m_aFamily == "table-row") + m_rStyles.GetCurrentRowStyles()[m_aName] = m_aRowPropertyList; + else if (m_aFamily == "table") + m_rStyles.GetCurrentTableStyles()[m_aName] = m_aTablePropertyList; + else if (m_aFamily == "graphic") + m_rStyles.GetCurrentGraphicStyles()[m_aName] = m_aGraphicPropertyList; + else if (rName == "style:page-layout") + m_rStyles.GetCurrentPageLayouts()[m_aName] = m_aPageLayoutPropertyList; + else if (rName == "style:master-page") + m_rStyles.GetCurrentMasterStyles()[m_aName] = m_aMasterPagePropertyList; +} + +librevenge::RVNGPropertyList& XMLStyleContext::GetTextPropertyList() { return m_aTextPropertyList; } + +librevenge::RVNGPropertyList& XMLStyleContext::GetParagraphPropertyList() +{ + return m_aParagraphPropertyList; +} + +librevenge::RVNGPropertyList& XMLStyleContext::GetCellPropertyList() { return m_aCellPropertyList; } + +librevenge::RVNGPropertyList& XMLStyleContext::GetColumnPropertyList() +{ + return m_aColumnPropertyList; +} + +librevenge::RVNGPropertyList& XMLStyleContext::GetRowPropertyList() { return m_aRowPropertyList; } + +librevenge::RVNGPropertyList& XMLStyleContext::GetTablePropertyList() +{ + return m_aTablePropertyList; +} + +librevenge::RVNGPropertyList& XMLStyleContext::GetGraphicPropertyList() +{ + return m_aGraphicPropertyList; +} + +librevenge::RVNGPropertyList& XMLStyleContext::GetPageLayoutPropertyList() +{ + return m_aPageLayoutPropertyList; +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/txtstyli.hxx b/writerperfect/source/writer/exp/txtstyli.hxx new file mode 100644 index 000000000..9247619bc --- /dev/null +++ b/writerperfect/source/writer/exp/txtstyli.hxx @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +class XMLStylesContext; + +/// Handler for . +class XMLStyleContext : public XMLImportContext +{ +public: + XMLStyleContext(XMLImport& rImport, XMLStylesContext& rStyles); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + + librevenge::RVNGPropertyList& GetTextPropertyList(); + librevenge::RVNGPropertyList& GetParagraphPropertyList(); + librevenge::RVNGPropertyList& GetCellPropertyList(); + librevenge::RVNGPropertyList& GetColumnPropertyList(); + librevenge::RVNGPropertyList& GetRowPropertyList(); + librevenge::RVNGPropertyList& GetTablePropertyList(); + librevenge::RVNGPropertyList& GetGraphicPropertyList(); + librevenge::RVNGPropertyList& GetPageLayoutPropertyList(); + +private: + OUString m_aName; + OUString m_aFamily; + librevenge::RVNGPropertyList m_aTextPropertyList; + librevenge::RVNGPropertyList m_aParagraphPropertyList; + librevenge::RVNGPropertyList m_aCellPropertyList; + librevenge::RVNGPropertyList m_aColumnPropertyList; + librevenge::RVNGPropertyList m_aRowPropertyList; + librevenge::RVNGPropertyList m_aTablePropertyList; + librevenge::RVNGPropertyList m_aGraphicPropertyList; + librevenge::RVNGPropertyList m_aPageLayoutPropertyList; + librevenge::RVNGPropertyList m_aMasterPagePropertyList; + XMLStylesContext& m_rStyles; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlfmt.cxx b/writerperfect/source/writer/exp/xmlfmt.cxx new file mode 100644 index 000000000..4ac70b85a --- /dev/null +++ b/writerperfect/source/writer/exp/xmlfmt.cxx @@ -0,0 +1,295 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "xmlfmt.hxx" + +#include "XMLBase64ImportContext.hxx" +#include "txtstyli.hxx" +#include "xmlimp.hxx" + +#include + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLStylesContext::XMLStylesContext(XMLImport& rImport, StyleType eType) + : XMLImportContext(rImport) + , m_rParagraphStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticParagraphStyles() + : GetImport().GetParagraphStyles()) + , m_rTextStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticTextStyles() + : GetImport().GetTextStyles()) + , m_rCellStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticCellStyles() + : GetImport().GetCellStyles()) + , m_rColumnStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticColumnStyles() + : GetImport().GetColumnStyles()) + , m_rRowStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticRowStyles() + : GetImport().GetRowStyles()) + , m_rTableStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticTableStyles() + : GetImport().GetTableStyles()) + , m_rGraphicStyles(eType == StyleType_AUTOMATIC ? GetImport().GetAutomaticGraphicStyles() + : GetImport().GetGraphicStyles()) + , m_rPageLayouts(GetImport().GetPageLayouts()) + , m_rMasterStyles(GetImport().GetMasterStyles()) +{ +} + +rtl::Reference XMLStylesContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "style:style" || rName == "style:page-layout" || rName == "style:master-page") + return new XMLStyleContext(GetImport(), *this); + return nullptr; +} + +std::map& XMLStylesContext::GetCurrentParagraphStyles() +{ + return m_rParagraphStyles; +} + +std::map& XMLStylesContext::GetCurrentTextStyles() +{ + return m_rTextStyles; +} + +std::map& XMLStylesContext::GetCurrentCellStyles() +{ + return m_rCellStyles; +} + +std::map& XMLStylesContext::GetCurrentColumnStyles() +{ + return m_rColumnStyles; +} + +std::map& XMLStylesContext::GetCurrentRowStyles() +{ + return m_rRowStyles; +} + +std::map& XMLStylesContext::GetCurrentTableStyles() +{ + return m_rTableStyles; +} + +std::map& XMLStylesContext::GetCurrentGraphicStyles() +{ + return m_rGraphicStyles; +} + +std::map& XMLStylesContext::GetCurrentPageLayouts() +{ + return m_rPageLayouts; +} + +std::map& XMLStylesContext::GetCurrentMasterStyles() +{ + return m_rMasterStyles; +} + +namespace +{ +/// Handler for . +class XMLFontFaceContext : public XMLImportContext +{ +public: + XMLFontFaceContext(XMLImport& rImport); + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + OUString const& GetName() const { return maName; } + +private: + OUString maName; +}; + +/// Handler for . +class XMLFontFaceSrcContext : public XMLImportContext +{ +public: + XMLFontFaceSrcContext(XMLImport& rImport, XMLFontFaceContext& rFontFace); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLFontFaceContext& mrFontFace; +}; + +/// Handler for . +class XMLFontFaceUriContext : public XMLImportContext +{ +public: + XMLFontFaceUriContext(XMLImport& rImport, XMLFontFaceContext const& rFontFace); + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + librevenge::RVNGPropertyList& GetPropertyList() { return maPropertyList; } + +private: + librevenge::RVNGPropertyList maPropertyList; + rtl::Reference mxBinaryData; +}; + +/// Handler for . +class XMLFontFaceFormatContext : public XMLImportContext +{ +public: + XMLFontFaceFormatContext(XMLImport& rImport, XMLFontFaceUriContext& rFontFaceUri); + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + XMLFontFaceUriContext& mrFontFaceUri; +}; +} + +XMLFontFaceFormatContext::XMLFontFaceFormatContext(XMLImport& rImport, + XMLFontFaceUriContext& rFontFaceUri) + : XMLImportContext(rImport) + , mrFontFaceUri(rFontFaceUri) +{ +} + +void XMLFontFaceFormatContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "svg:string") + { + OString aAttributeValueU8 = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + mrFontFaceUri.GetPropertyList().insert("librevenge:mime-type", + aAttributeValueU8.getStr()); + } + } +} + +XMLFontFaceUriContext::XMLFontFaceUriContext(XMLImport& rImport, + XMLFontFaceContext const& rFontFace) + : XMLImportContext(rImport) +{ + OString aNameU8 = OUStringToOString(rFontFace.GetName(), RTL_TEXTENCODING_UTF8); + maPropertyList.insert("librevenge:name", aNameU8.getStr()); +} + +void XMLFontFaceUriContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "loext:font-style") + { + OString aAttributeValueU8 = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + maPropertyList.insert("librevenge:font-style", aAttributeValueU8.getStr()); + } + else if (rAttributeName == "loext:font-weight") + { + OString aAttributeValueU8 = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + maPropertyList.insert("librevenge:font-weight", aAttributeValueU8.getStr()); + } + } +} + +void XMLFontFaceUriContext::endElement(const OUString& /*rName*/) +{ + if (mxBinaryData.is()) + maPropertyList.insert("office:binary-data", mxBinaryData->getBinaryData()); + GetImport().GetGenerator().defineEmbeddedFont(maPropertyList); +} + +rtl::Reference XMLFontFaceUriContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "office:binary-data") + { + mxBinaryData = new XMLBase64ImportContext(GetImport()); + return mxBinaryData; + } + if (rName == "svg:font-face-format") + return new XMLFontFaceFormatContext(GetImport(), *this); + + SAL_WARN("writerperfect", "XMLFontFaceUriContext::CreateChildContext: unhandled " << rName); + return nullptr; +} + +XMLFontFaceSrcContext::XMLFontFaceSrcContext(XMLImport& rImport, XMLFontFaceContext& rFontFace) + : XMLImportContext(rImport) + , mrFontFace(rFontFace) +{ +} + +rtl::Reference XMLFontFaceSrcContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "svg:font-face-uri") + return new XMLFontFaceUriContext(GetImport(), mrFontFace); + SAL_WARN("writerperfect", "XMLFontFaceSrcContext::CreateChildContext: unhandled " << rName); + return nullptr; +} + +XMLFontFaceContext::XMLFontFaceContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +void XMLFontFaceContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + if (rAttributeName == "style:name") + maName = rAttributeValue; + } +} + +rtl::Reference XMLFontFaceContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "svg:font-face-src") + return new XMLFontFaceSrcContext(GetImport(), *this); + SAL_WARN("writerperfect", "XMLFontFaceContext::CreateChildContext: unhandled " << rName); + return nullptr; +} + +XMLFontFaceDeclsContext::XMLFontFaceDeclsContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLFontFaceDeclsContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "style:font-face") + return new XMLFontFaceContext(GetImport()); + return nullptr; +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlfmt.hxx b/writerperfect/source/writer/exp/xmlfmt.hxx new file mode 100644 index 000000000..22849be7e --- /dev/null +++ b/writerperfect/source/writer/exp/xmlfmt.hxx @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "xmlictxt.hxx" + +namespace librevenge +{ +class RVNGPropertyList; +} + +namespace writerperfect::exp +{ +/// Handler for /. +class XMLStylesContext : public XMLImportContext +{ +public: + enum StyleType + { + StyleType_NONE, + StyleType_AUTOMATIC + }; + XMLStylesContext(XMLImport& rImport, StyleType eType); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + std::map& GetCurrentParagraphStyles(); + std::map& GetCurrentTextStyles(); + std::map& GetCurrentCellStyles(); + std::map& GetCurrentColumnStyles(); + std::map& GetCurrentRowStyles(); + std::map& GetCurrentTableStyles(); + std::map& GetCurrentGraphicStyles(); + std::map& GetCurrentPageLayouts(); + std::map& GetCurrentMasterStyles(); + +private: + std::map& m_rParagraphStyles; + std::map& m_rTextStyles; + std::map& m_rCellStyles; + std::map& m_rColumnStyles; + std::map& m_rRowStyles; + std::map& m_rTableStyles; + std::map& m_rGraphicStyles; + std::map& m_rPageLayouts; + std::map& m_rMasterStyles; +}; + +/// Handler for . +class XMLFontFaceDeclsContext : public XMLImportContext +{ +public: + XMLFontFaceDeclsContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlictxt.cxx b/writerperfect/source/writer/exp/xmlictxt.cxx new file mode 100644 index 000000000..ebfe58402 --- /dev/null +++ b/writerperfect/source/writer/exp/xmlictxt.cxx @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "xmlictxt.hxx" + +#include "xmlimp.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLImportContext::XMLImportContext(XMLImport& rImport) + : mrImport(rImport) +{ +} + +rtl::Reference XMLImportContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& xAttribs) +{ + return mrImport.CreateContext(rName, xAttribs); +} + +void XMLImportContext::startDocument() {} + +void XMLImportContext::endDocument() {} + +void XMLImportContext::startElement( + const OUString& /*rName*/, + const css::uno::Reference& /*xAttribs*/) +{ +} + +void XMLImportContext::endElement(const OUString& /*rName*/) {} + +void XMLImportContext::characters(const OUString& /*rChars*/) {} + +void XMLImportContext::ignorableWhitespace(const OUString& /*rWhitespaces*/) {} + +void XMLImportContext::processingInstruction(const OUString& /*rTarget*/, const OUString& /*rData*/) +{ +} + +void XMLImportContext::setDocumentLocator( + const css::uno::Reference& /*xLocator*/) +{ +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlictxt.hxx b/writerperfect/source/writer/exp/xmlictxt.hxx new file mode 100644 index 000000000..dc05449d3 --- /dev/null +++ b/writerperfect/source/writer/exp/xmlictxt.hxx @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include +#include + +namespace writerperfect::exp +{ +class XMLImport; + +/// Base class for a handler of a single XML element during ODF -> librevenge conversion. +class XMLImportContext : public cppu::WeakImplHelper +{ +public: + XMLImportContext(XMLImport& rImport); + XMLImport& GetImport() { return mrImport; } + + virtual rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs); + + // XDocumentHandler + void SAL_CALL startDocument() override; + void SAL_CALL endDocument() override; + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + void SAL_CALL characters(const OUString& rChars) override; + void SAL_CALL ignorableWhitespace(const OUString& rWhitespaces) override; + void SAL_CALL processingInstruction(const OUString& rTarget, const OUString& rData) override; + void SAL_CALL + setDocumentLocator(const css::uno::Reference& xLocator) override; + +private: + XMLImport& mrImport; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlimp.cxx b/writerperfect/source/writer/exp/xmlimp.cxx new file mode 100644 index 000000000..ae7b33518 --- /dev/null +++ b/writerperfect/source/writer/exp/xmlimp.cxx @@ -0,0 +1,621 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include "xmlimp.hxx" + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "xmlfmt.hxx" +#include "xmlictxt.hxx" +#include "xmlmetai.hxx" +#include "xmltext.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +namespace +{ +/// Looks up mime type for a given image extension. +OUString GetMimeType(const OUString& rExtension) +{ + static const std::unordered_map vMimeTypes = { + { "gif", "image/gif" }, + { "jpg", "image/jpeg" }, + { "png", "image/png" }, + { "svg", "image/svg+xml" }, + }; + + auto it = vMimeTypes.find(rExtension); + return it == vMimeTypes.end() ? OUString() : it->second; +} + +/// Determines the base directory for cover images, XMP metadata, popup images. +OUString FindMediaDir(const OUString& rDocumentBaseURL, + const uno::Sequence& rFilterData) +{ + OUString aMediaDir; + + // See if filter data contains a media directory explicitly. + auto pProp = std::find_if( + rFilterData.begin(), rFilterData.end(), + [](const beans::PropertyValue& rProp) { return rProp.Name == "RVNGMediaDir"; }); + if (pProp != rFilterData.end()) + pProp->Value >>= aMediaDir; + + if (!aMediaDir.isEmpty()) + return aMediaDir + "/"; + + // Not set explicitly, try to pick it up from the base directory. + INetURLObject aURL(rDocumentBaseURL); + try + { + aMediaDir = rtl::Uri::convertRelToAbs(rDocumentBaseURL, aURL.GetBase()) + "/"; + } + catch (const rtl::MalformedUriException&) + { + DBG_UNHANDLED_EXCEPTION("writerperfect"); + } + return aMediaDir; +} + +/// Picks up a cover image from the base directory. +OUString FindCoverImage(const OUString& rDocumentBaseURL, OUString& rMimeType, + const uno::Sequence& rFilterData) +{ + OUString aRet; + + // See if filter data contains a cover image explicitly. + auto pProp = std::find_if( + rFilterData.begin(), rFilterData.end(), + [](const beans::PropertyValue& rProp) { return rProp.Name == "RVNGCoverImage"; }); + if (pProp != rFilterData.end()) + pProp->Value >>= aRet; + + if (!aRet.isEmpty()) + { + INetURLObject aRetURL(aRet); + rMimeType = GetMimeType(aRetURL.GetFileExtension()); + return aRet; + } + + // Not set explicitly, try to pick it up from the base directory. + if (rDocumentBaseURL.isEmpty()) + return aRet; + + static const std::initializer_list vExtensions + = { u"gif", u"jpg", u"png", u"svg" }; + + OUString aMediaDir = FindMediaDir(rDocumentBaseURL, rFilterData); + for (const auto& rExtension : vExtensions) + { + aRet = aMediaDir + "cover." + rExtension; + if (!aRet.isEmpty()) + { + SvFileStream aStream(aRet, StreamMode::READ); + if (aStream.IsOpen()) + { + rMimeType = GetMimeType(OUString(rExtension)); + // File exists. + return aRet; + } + + aRet.clear(); + } + } + + return aRet; +} + +/// Picks up XMP metadata from the base directory. +void FindXMPMetadata(const uno::Reference& xContext, + const OUString& rDocumentBaseURL, + const uno::Sequence& rFilterData, + librevenge::RVNGPropertyList& rMetaData) +{ + // See if filter data contains metadata explicitly. + OUString aValue; + for (const auto& rProp : rFilterData) + { + if (rProp.Name == "RVNGIdentifier") + { + rProp.Value >>= aValue; + if (!aValue.isEmpty()) + rMetaData.insert("dc:identifier", aValue.toUtf8().getStr()); + } + else if (rProp.Name == "RVNGTitle") + { + rProp.Value >>= aValue; + if (!aValue.isEmpty()) + rMetaData.insert("dc:title", aValue.toUtf8().getStr()); + } + else if (rProp.Name == "RVNGInitialCreator") + { + rProp.Value >>= aValue; + if (!aValue.isEmpty()) + rMetaData.insert("meta:initial-creator", aValue.toUtf8().getStr()); + } + else if (rProp.Name == "RVNGLanguage") + { + rProp.Value >>= aValue; + if (!aValue.isEmpty()) + rMetaData.insert("dc:language", aValue.toUtf8().getStr()); + } + else if (rProp.Name == "RVNGDate") + { + rProp.Value >>= aValue; + if (!aValue.isEmpty()) + rMetaData.insert("dc:date", aValue.toUtf8().getStr()); + } + } + + // If not set explicitly, try to pick it up from the base directory. + if (rDocumentBaseURL.isEmpty()) + return; + + OUString aMediaDir = FindMediaDir(rDocumentBaseURL, rFilterData); + OUString aURL = aMediaDir + "metadata.xmp"; + SvFileStream aStream(aURL, StreamMode::READ); + if (!aStream.IsOpen()) + return; + + xml::sax::InputSource aInputSource; + uno::Reference xStream(new utl::OStreamWrapper(aStream)); + aInputSource.aInputStream = xStream; + uno::Reference xParser = xml::sax::Parser::create(xContext); + rtl::Reference xXMP(new XMPParser(rMetaData)); + xParser->setDocumentHandler(xXMP); + try + { + xParser->parseStream(aInputSource); + } + catch (const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("writerperfect", "parseStream() failed"); + return; + } +} + +/// Handler for . +class XMLBodyContext : public XMLImportContext +{ +public: + XMLBodyContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const uno::Reference& /*xAttribs*/) override; +}; +} + +XMLBodyContext::XMLBodyContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference +XMLBodyContext::CreateChildContext(const OUString& rName, + const uno::Reference& /*xAttribs*/) +{ + if (rName == "office:text") + return new XMLBodyContentContext(GetImport()); + return nullptr; +} + +namespace +{ +/// Handler for . +class XMLOfficeDocContext : public XMLImportContext +{ +public: + XMLOfficeDocContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const uno::Reference& /*xAttribs*/) override; + + // Handles metafile for a single page. + void HandleFixedLayoutPage(const FixedLayoutPage& rPage, bool bFirst); +}; +} + +XMLOfficeDocContext::XMLOfficeDocContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLOfficeDocContext::CreateChildContext( + const OUString& rName, const uno::Reference& /*xAttribs*/) +{ + if (rName == "office:meta") + return new XMLMetaDocumentContext(GetImport()); + if (rName == "office:automatic-styles") + return new XMLStylesContext(GetImport(), XMLStylesContext::StyleType_AUTOMATIC); + if (rName == "office:styles") + return new XMLStylesContext(GetImport(), XMLStylesContext::StyleType_NONE); + if (rName == "office:master-styles") + return new XMLStylesContext(GetImport(), XMLStylesContext::StyleType_NONE); + if (rName == "office:font-face-decls") + return new XMLFontFaceDeclsContext(GetImport()); + if (rName == "office:body") + { + if (GetImport().GetPageMetafiles().empty()) + return new XMLBodyContext(GetImport()); + + // Ignore text from doc model in the fixed layout case, instead + // insert the page metafiles. + bool bFirst = true; + for (const auto& rPage : GetImport().GetPageMetafiles()) + { + HandleFixedLayoutPage(rPage, bFirst); + if (bFirst) + bFirst = false; + } + } + return nullptr; +} + +void XMLOfficeDocContext::HandleFixedLayoutPage(const FixedLayoutPage& rPage, bool bFirst) +{ + uno::Reference xCtx = GetImport().GetComponentContext(); + uno::Reference xSaxWriter = xml::sax::Writer::create(xCtx); + if (!xSaxWriter.is()) + return; + + // [-loplugin:redundantfcast] false positive: + uno::Sequence aArguments = { uno::Any(uno::Sequence( + { comphelper::makePropertyValue("DTDString", false) })) }; + uno::Reference xSVGWriter( + xCtx->getServiceManager()->createInstanceWithArgumentsAndContext( + "com.sun.star.svg.SVGWriter", aArguments, xCtx), + uno::UNO_QUERY); + if (!xSVGWriter.is()) + return; + + SvMemoryStream aMemoryStream; + xSaxWriter->setOutputStream(new utl::OStreamWrapper(aMemoryStream)); + + xSVGWriter->write(xSaxWriter, rPage.aMetafile); + + // Have all the info, invoke the generator. + librevenge::RVNGPropertyList aPageProperties; + // Pixel -> inch. + double fWidth = rPage.aCssPixels.getWidth(); + fWidth /= 96; + aPageProperties.insert("fo:page-width", fWidth); + double fHeight = rPage.aCssPixels.getHeight(); + fHeight /= 96; + aPageProperties.insert("fo:page-height", fHeight); + + if (!rPage.aChapterNames.empty()) + { + // Name of chapters starting on this page. + librevenge::RVNGPropertyListVector aChapterNames; + for (const auto& rName : rPage.aChapterNames) + { + librevenge::RVNGPropertyList aChapter; + aChapter.insert("librevenge:name", rName.toUtf8().getStr()); + aChapterNames.append(aChapter); + } + aPageProperties.insert("librevenge:chapter-names", aChapterNames); + } + + GetImport().GetGenerator().openPageSpan(aPageProperties); + librevenge::RVNGPropertyList aParagraphProperties; + if (!bFirst) + // All pages except the first one needs a page break before the page + // metafile. + aParagraphProperties.insert("fo:break-before", "page"); + GetImport().GetGenerator().openParagraph(aParagraphProperties); + librevenge::RVNGPropertyList aImageProperties; + aImageProperties.insert("librevenge:mime-type", "image/svg+xml"); + librevenge::RVNGBinaryData aBinaryData; + aBinaryData.append(static_cast(aMemoryStream.GetData()), + aMemoryStream.GetSize()); + aImageProperties.insert("office:binary-data", aBinaryData); + GetImport().GetGenerator().insertBinaryObject(aImageProperties); + GetImport().GetGenerator().closeParagraph(); + GetImport().GetGenerator().closePageSpan(); +} + +XMLImport::XMLImport(const uno::Reference& xContext, + librevenge::RVNGTextInterface& rGenerator, const OUString& rURL, + const uno::Sequence& rDescriptor, + const std::vector& rPageMetafiles) + : mrGenerator(rGenerator) + , mxContext(xContext) + , mbIsInPageSpan(false) + , mrPageMetafiles(rPageMetafiles) +{ + uno::Sequence aFilterData; + auto pDescriptor = std::find_if( + rDescriptor.begin(), rDescriptor.end(), + [](const beans::PropertyValue& rProp) { return rProp.Name == "FilterData"; }); + if (pDescriptor != rDescriptor.end()) + pDescriptor->Value >>= aFilterData; + + maMediaDir = FindMediaDir(rURL, aFilterData); + + OUString aMimeType; + OUString aCoverImage = FindCoverImage(rURL, aMimeType, aFilterData); + if (!aCoverImage.isEmpty()) + { + librevenge::RVNGBinaryData aBinaryData; + SvFileStream aStream(aCoverImage, StreamMode::READ); + SvMemoryStream aMemoryStream; + aMemoryStream.WriteStream(aStream); + aBinaryData.append(static_cast(aMemoryStream.GetData()), + aMemoryStream.GetSize()); + librevenge::RVNGPropertyList aCoverImageProperties; + aCoverImageProperties.insert("office:binary-data", aBinaryData); + aCoverImageProperties.insert("librevenge:mime-type", aMimeType.toUtf8().getStr()); + maCoverImages.append(aCoverImageProperties); + } + + FindXMPMetadata(mxContext, rURL, aFilterData, maMetaData); + + mxUriReferenceFactory = uri::UriReferenceFactory::create(mxContext); +} + +const librevenge::RVNGPropertyListVector& XMLImport::GetCoverImages() const +{ + return maCoverImages; +} + +const librevenge::RVNGPropertyList& XMLImport::GetMetaData() const { return maMetaData; } + +namespace +{ +/// Finds out if a file URL exists. +bool FileURLExists(const OUString& rURL) +{ + SvFileStream aStream(rURL, StreamMode::READ); + return aStream.IsOpen(); +} +} + +PopupState XMLImport::FillPopupData(const OUString& rURL, librevenge::RVNGPropertyList& rPropList) +{ + uno::Reference xUriRef; + try + { + xUriRef = mxUriReferenceFactory->parse(rURL); + } + catch (const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("writerperfect", "XUriReference::parse() failed"); + } + bool bAbsolute = true; + if (xUriRef.is()) + bAbsolute = xUriRef->isAbsolute(); + if (bAbsolute) + return PopupState::NotConsumed; + + // Default case: relative URL, popup data was in the same directory as the + // document at insertion time. + OUString aAbs = maMediaDir + rURL; + if (!FileURLExists(aAbs)) + // Fallback case: relative URL, popup data was in the default media + // directory at insertion time. + aAbs = maMediaDir + "../" + rURL; + + if (!FileURLExists(aAbs)) + // Relative link, but points to non-existing file: don't emit that to + // librevenge, since it will be invalid anyway. + return PopupState::Ignore; + + SvFileStream aStream(aAbs, StreamMode::READ); + librevenge::RVNGBinaryData aBinaryData; + SvMemoryStream aMemoryStream; + aMemoryStream.WriteStream(aStream); + aBinaryData.append(static_cast(aMemoryStream.GetData()), + aMemoryStream.GetSize()); + rPropList.insert("office:binary-data", aBinaryData); + + INetURLObject aAbsURL(aAbs); + OUString aMimeType = GetMimeType(aAbsURL.GetFileExtension()); + rPropList.insert("librevenge:mime-type", aMimeType.toUtf8().getStr()); + + return PopupState::Consumed; +} + +const std::vector& XMLImport::GetPageMetafiles() const { return mrPageMetafiles; } + +const uno::Reference& XMLImport::GetComponentContext() const +{ + return mxContext; +} + +rtl::Reference +XMLImport::CreateContext(std::u16string_view rName, + const uno::Reference& /*xAttribs*/) +{ + if (rName == u"office:document") + return new XMLOfficeDocContext(*this); + return nullptr; +} + +librevenge::RVNGTextInterface& XMLImport::GetGenerator() const { return mrGenerator; } + +std::map& XMLImport::GetAutomaticTextStyles() +{ + return maAutomaticTextStyles; +} + +std::map& XMLImport::GetAutomaticParagraphStyles() +{ + return maAutomaticParagraphStyles; +} + +std::map& XMLImport::GetAutomaticCellStyles() +{ + return maAutomaticCellStyles; +} + +std::map& XMLImport::GetAutomaticColumnStyles() +{ + return maAutomaticColumnStyles; +} + +std::map& XMLImport::GetAutomaticRowStyles() +{ + return maAutomaticRowStyles; +} + +std::map& XMLImport::GetAutomaticTableStyles() +{ + return maAutomaticTableStyles; +} + +std::map& XMLImport::GetAutomaticGraphicStyles() +{ + return maAutomaticGraphicStyles; +} + +std::map& XMLImport::GetTextStyles() +{ + return maTextStyles; +} + +std::map& XMLImport::GetParagraphStyles() +{ + return maParagraphStyles; +} + +std::map& XMLImport::GetCellStyles() +{ + return maCellStyles; +} + +std::map& XMLImport::GetColumnStyles() +{ + return maColumnStyles; +} + +std::map& XMLImport::GetRowStyles() { return maRowStyles; } + +std::map& XMLImport::GetTableStyles() +{ + return maTableStyles; +} + +std::map& XMLImport::GetGraphicStyles() +{ + return maGraphicStyles; +} + +std::map& XMLImport::GetPageLayouts() +{ + return maPageLayouts; +} + +std::map& XMLImport::GetMasterStyles() +{ + return maMasterStyles; +} + +void XMLImport::startDocument() { mrGenerator.startDocument(librevenge::RVNGPropertyList()); } + +void XMLImport::endDocument() { mrGenerator.endDocument(); } + +void XMLImport::startElement(const OUString& rName, + const uno::Reference& xAttribs) +{ + rtl::Reference xContext; + if (!maContexts.empty()) + { + if (maContexts.top().is()) + xContext = maContexts.top()->CreateChildContext(rName, xAttribs); + } + else + xContext = CreateContext(rName, xAttribs); + + if (xContext.is()) + xContext->startElement(rName, xAttribs); + + maContexts.push(xContext); +} + +void XMLImport::endElement(const OUString& rName) +{ + if (maContexts.empty()) + return; + + if (maContexts.top().is()) + maContexts.top()->endElement(rName); + + maContexts.pop(); +} + +void XMLImport::characters(const OUString& rChars) +{ + if (maContexts.top().is()) + maContexts.top()->characters(rChars); +} + +void XMLImport::ignorableWhitespace(const OUString& /*rWhitespaces*/) {} + +void XMLImport::processingInstruction(const OUString& /*rTarget*/, const OUString& /*rData*/) {} + +void XMLImport::setDocumentLocator(const uno::Reference& /*xLocator*/) {} + +void XMLImport::HandlePageSpan(const librevenge::RVNGPropertyList& rPropertyList) +{ + OUString sMasterPageName; + OUString sLayoutName; + + if (rPropertyList["style:master-page-name"]) + sMasterPageName = OStringToOUString( + rPropertyList["style:master-page-name"]->getStr().cstr(), RTL_TEXTENCODING_UTF8); + else if (!GetIsInPageSpan()) + sMasterPageName = "Standard"; + + if (sMasterPageName.getLength()) + { + librevenge::RVNGPropertyList& rMasterPage = GetMasterStyles()[sMasterPageName]; + if (rMasterPage["style:page-layout-name"]) + { + sLayoutName = OStringToOUString(rMasterPage["style:page-layout-name"]->getStr().cstr(), + RTL_TEXTENCODING_UTF8); + } + } + + if (sLayoutName.getLength()) + { + librevenge::RVNGPropertyList& rPageLayout = GetPageLayouts()[sLayoutName]; + + if (GetIsInPageSpan()) + GetGenerator().closePageSpan(); + + GetGenerator().openPageSpan(rPageLayout); + mbIsInPageSpan = true; + } +} + +} // namespace writerperfect + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlimp.hxx b/writerperfect/source/writer/exp/xmlimp.hxx new file mode 100644 index 000000000..fd2882371 --- /dev/null +++ b/writerperfect/source/writer/exp/xmlimp.hxx @@ -0,0 +1,149 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include "xmlictxt.hxx" + +namespace com::sun::star +{ +namespace beans +{ +struct PropertyValue; +} +namespace uno +{ +class XComponentContext; +} +namespace uri +{ +class XUriReferenceFactory; +} +} + +namespace writerperfect::exp +{ +class XMLImportContext; + +/// Contains info about a fixed-layout page. +struct FixedLayoutPage +{ + css::uno::Sequence aMetafile; + Size aCssPixels; + std::vector aChapterNames; +}; + +/// States describing the result of a link -> popup conversion. +enum class PopupState +{ + /// Conversion did not happen yet. + NONE, + /// The relative link was converted to a popup. + Consumed, + /// The absolute link was not handled. + NotConsumed, + /// The relative link is invalid and should be ignored. + Ignore +}; + +/// ODT export feeds this class to make librevenge calls. +class XMLImport : public cppu::WeakImplHelper +{ + librevenge::RVNGTextInterface& mrGenerator; + std::stack> maContexts; + std::map maAutomaticTextStyles; + std::map maTextStyles; + std::map maAutomaticParagraphStyles; + std::map maParagraphStyles; + std::map maAutomaticCellStyles; + std::map maCellStyles; + std::map maAutomaticColumnStyles; + std::map maColumnStyles; + std::map maAutomaticRowStyles; + std::map maRowStyles; + std::map maAutomaticTableStyles; + std::map maTableStyles; + std::map maAutomaticGraphicStyles; + std::map maGraphicStyles; + std::map maPageLayouts; + std::map maMasterStyles; + librevenge::RVNGPropertyListVector maCoverImages; + /// Author, date, etc -- overwrites what would be from the document out of the box. + librevenge::RVNGPropertyList maMetaData; + const css::uno::Reference& mxContext; + css::uno::Reference mxUriReferenceFactory; + OUString maMediaDir; + bool mbIsInPageSpan; + const std::vector& mrPageMetafiles; + +public: + XMLImport(const css::uno::Reference& xContext, + librevenge::RVNGTextInterface& rGenerator, const OUString& rURL, + const css::uno::Sequence& rDescriptor, + const std::vector& rPageMetafiles); + + rtl::Reference + CreateContext(std::u16string_view rName, + const css::uno::Reference& xAttribs); + + librevenge::RVNGTextInterface& GetGenerator() const; + std::map& GetAutomaticTextStyles(); + std::map& GetAutomaticParagraphStyles(); + std::map& GetAutomaticCellStyles(); + std::map& GetAutomaticColumnStyles(); + std::map& GetAutomaticRowStyles(); + std::map& GetAutomaticTableStyles(); + std::map& GetAutomaticGraphicStyles(); + std::map& GetTextStyles(); + std::map& GetParagraphStyles(); + std::map& GetCellStyles(); + std::map& GetColumnStyles(); + std::map& GetRowStyles(); + std::map& GetTableStyles(); + std::map& GetGraphicStyles(); + std::map& GetPageLayouts(); + std::map& GetMasterStyles(); + const librevenge::RVNGPropertyListVector& GetCoverImages() const; + const librevenge::RVNGPropertyList& GetMetaData() const; + PopupState FillPopupData(const OUString& rURL, librevenge::RVNGPropertyList& rPropList); + const std::vector& GetPageMetafiles() const; + const css::uno::Reference& GetComponentContext() const; + + bool GetIsInPageSpan() const { return mbIsInPageSpan; } + void HandlePageSpan(const librevenge::RVNGPropertyList& rPropertyList); + + // XDocumentHandler + void SAL_CALL startDocument() override; + void SAL_CALL endDocument() override; + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + void SAL_CALL characters(const OUString& rChars) override; + void SAL_CALL ignorableWhitespace(const OUString& rWhitespaces) override; + void SAL_CALL processingInstruction(const OUString& rTarget, const OUString& rData) override; + void SAL_CALL + setDocumentLocator(const css::uno::Reference& xLocator) override; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlmetai.cxx b/writerperfect/source/writer/exp/xmlmetai.cxx new file mode 100644 index 000000000..2e42f740f --- /dev/null +++ b/writerperfect/source/writer/exp/xmlmetai.cxx @@ -0,0 +1,285 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "xmlmetai.hxx" + +#include "xmlimp.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +namespace +{ +/// Handler for . +class XMLDcTitleContext : public XMLImportContext +{ +public: + XMLDcTitleContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta); + + void SAL_CALL characters(const OUString& rChars) override; + +private: + XMLMetaDocumentContext& mrMeta; +}; +} + +XMLDcTitleContext::XMLDcTitleContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta) + : XMLImportContext(rImport) + , mrMeta(rMeta) +{ +} + +void XMLDcTitleContext::characters(const OUString& rChars) +{ + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + if (!mrMeta.GetPropertyList()["dc:title"]) + mrMeta.GetPropertyList().insert("dc:title", librevenge::RVNGString(sCharU8.getStr())); +} + +namespace +{ +/// Handler for . +class XMLDcLanguageContext : public XMLImportContext +{ +public: + XMLDcLanguageContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta); + + void SAL_CALL characters(const OUString& rChars) override; + +private: + XMLMetaDocumentContext& mrMeta; +}; +} + +XMLDcLanguageContext::XMLDcLanguageContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta) + : XMLImportContext(rImport) + , mrMeta(rMeta) +{ +} + +void XMLDcLanguageContext::characters(const OUString& rChars) +{ + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + if (!mrMeta.GetPropertyList()["dc:language"]) + mrMeta.GetPropertyList().insert("dc:language", librevenge::RVNGString(sCharU8.getStr())); +} + +namespace +{ +/// Handler for . +class XMLDcDateContext : public XMLImportContext +{ +public: + XMLDcDateContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta); + + void SAL_CALL characters(const OUString& rChars) override; + +private: + XMLMetaDocumentContext& mrMeta; +}; +} + +XMLDcDateContext::XMLDcDateContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta) + : XMLImportContext(rImport) + , mrMeta(rMeta) +{ +} + +void XMLDcDateContext::characters(const OUString& rChars) +{ + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + if (!mrMeta.GetPropertyList()["dc:date"]) + mrMeta.GetPropertyList().insert("dc:date", librevenge::RVNGString(sCharU8.getStr())); +} + +namespace +{ +/// Handler for . +class XMLMetaGeneratorContext : public XMLImportContext +{ +public: + XMLMetaGeneratorContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta); + + void SAL_CALL characters(const OUString& rChars) override; + +private: + XMLMetaDocumentContext& mrMeta; +}; +} + +XMLMetaGeneratorContext::XMLMetaGeneratorContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta) + : XMLImportContext(rImport) + , mrMeta(rMeta) +{ +} + +void XMLMetaGeneratorContext::characters(const OUString& rChars) +{ + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + mrMeta.GetPropertyList().insert("meta:generator", librevenge::RVNGString(sCharU8.getStr())); +} + +namespace +{ +/// Handler for . +class XMLMetaInitialCreatorContext : public XMLImportContext +{ +public: + XMLMetaInitialCreatorContext(XMLImport& rImport, XMLMetaDocumentContext& rMeta); + + void SAL_CALL characters(const OUString& rChars) override; + +private: + XMLMetaDocumentContext& mrMeta; +}; +} + +XMLMetaInitialCreatorContext::XMLMetaInitialCreatorContext(XMLImport& rImport, + XMLMetaDocumentContext& rMeta) + : XMLImportContext(rImport) + , mrMeta(rMeta) +{ +} + +void XMLMetaInitialCreatorContext::characters(const OUString& rChars) +{ + OString sCharU8 = OUStringToOString(rChars, RTL_TEXTENCODING_UTF8); + if (!mrMeta.GetPropertyList()["meta:initial-creator"]) + mrMeta.GetPropertyList().insert("meta:initial-creator", + librevenge::RVNGString(sCharU8.getStr())); +} + +XMLMetaDocumentContext::XMLMetaDocumentContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ + librevenge::RVNGPropertyList::Iter it(GetImport().GetMetaData()); + for (it.rewind(); it.next();) + m_aPropertyList.insert(it.key(), it()->clone()); + m_aPropertyList.insert("librevenge:cover-images", GetImport().GetCoverImages()); +} + +rtl::Reference XMLMetaDocumentContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "dc:title") + return new XMLDcTitleContext(GetImport(), *this); + if (rName == "dc:language") + return new XMLDcLanguageContext(GetImport(), *this); + if (rName == "dc:date") + return new XMLDcDateContext(GetImport(), *this); + if (rName == "meta:generator") + return new XMLMetaGeneratorContext(GetImport(), *this); + if (rName == "meta:initial-creator") + return new XMLMetaInitialCreatorContext(GetImport(), *this); + return nullptr; +} + +void XMLMetaDocumentContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().setDocumentMetaData(m_aPropertyList); +} + +XMPParser::XMPParser(librevenge::RVNGPropertyList& rMetaData) + : mrMetaData(rMetaData) +{ +} + +XMPParser::~XMPParser() = default; + +void XMPParser::startDocument() {} + +void XMPParser::endDocument() +{ + if (!mrMetaData["dc:identifier"] && !m_aIdentifier.isEmpty()) + mrMetaData.insert("dc:identifier", m_aIdentifier.toUtf8().getStr()); + if (!mrMetaData["dc:title"] && !m_aTitle.isEmpty()) + mrMetaData.insert("dc:title", m_aTitle.toUtf8().getStr()); + if (!mrMetaData["meta:initial-creator"] && !m_aCreator.isEmpty()) + mrMetaData.insert("meta:initial-creator", m_aCreator.toUtf8().getStr()); + if (!mrMetaData["dc:language"] && !m_aLanguage.isEmpty()) + mrMetaData.insert("dc:language", m_aLanguage.toUtf8().getStr()); + if (!mrMetaData["dc:date"] && !m_aDate.isEmpty()) + mrMetaData.insert("dc:date", m_aDate.toUtf8().getStr()); +} + +void XMPParser::startElement(const OUString& rName, + const uno::Reference& /*xAttribs*/) +{ + if (rName == "dc:identifier") + m_bInIdentifier = true; + else if (rName == "dc:title") + m_bInTitle = true; + else if (rName == "dc:creator") + m_bInCreator = true; + else if (rName == "dc:language") + m_bInLanguage = true; + else if (rName == "dc:date") + m_bInDate = true; + else if (rName == "rdf:li") + { + if (m_bInTitle) + m_bInTitleItem = true; + else if (m_bInCreator) + m_bInCreatorItem = true; + else if (m_bInLanguage) + m_bInLanguageItem = true; + else if (m_bInDate) + m_bInDateItem = true; + } +} + +void XMPParser::endElement(const OUString& rName) +{ + if (rName == "dc:identifier") + m_bInIdentifier = false; + else if (rName == "dc:title") + m_bInTitle = false; + else if (rName == "dc:creator") + m_bInCreator = false; + else if (rName == "dc:language") + m_bInLanguage = false; + else if (rName == "dc:date") + m_bInDate = false; + else if (rName == "rdf:li") + { + if (m_bInTitle) + m_bInTitleItem = false; + else if (m_bInCreator) + m_bInCreatorItem = false; + else if (m_bInLanguage) + m_bInLanguageItem = false; + else if (m_bInDate) + m_bInDateItem = false; + } +} + +void XMPParser::characters(const OUString& rChars) +{ + if (m_bInIdentifier) + m_aIdentifier += rChars; + else if (m_bInTitleItem) + m_aTitle += rChars; + else if (m_bInCreatorItem) + m_aCreator += rChars; + else if (m_bInLanguageItem) + m_aLanguage += rChars; + else if (m_bInDateItem) + m_aDate += rChars; +} + +void XMPParser::ignorableWhitespace(const OUString& /*rWhitespace*/) {} + +void XMPParser::processingInstruction(const OUString& /*rTarget*/, const OUString& /*rData*/) {} + +void XMPParser::setDocumentLocator(const uno::Reference& /*xLocator*/) {} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmlmetai.hxx b/writerperfect/source/writer/exp/xmlmetai.hxx new file mode 100644 index 000000000..f87ddff24 --- /dev/null +++ b/writerperfect/source/writer/exp/xmlmetai.hxx @@ -0,0 +1,83 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLMetaDocumentContext : public XMLImportContext +{ +public: + XMLMetaDocumentContext(XMLImport& rImport); + + librevenge::RVNGPropertyList& GetPropertyList() { return m_aPropertyList; } + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL endElement(const OUString& rName) override; + +private: + librevenge::RVNGPropertyList m_aPropertyList; +}; + +/// Parses an XMP file. +class XMPParser : public cppu::WeakImplHelper +{ +public: + explicit XMPParser(librevenge::RVNGPropertyList& rMetaData); + ~XMPParser() override; + + // XDocumentHandler + void SAL_CALL startDocument() override; + + void SAL_CALL endDocument() override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL endElement(const OUString& rName) override; + + void SAL_CALL characters(const OUString& rChars) override; + + void SAL_CALL ignorableWhitespace(const OUString& aWhitespaces) override; + + void SAL_CALL processingInstruction(const OUString& aTarget, const OUString& aData) override; + + void SAL_CALL + setDocumentLocator(const css::uno::Reference& xLocator) override; + +private: + librevenge::RVNGPropertyList& mrMetaData; + bool m_bInIdentifier = false; + OUString m_aIdentifier; + bool m_bInTitle = false; + bool m_bInTitleItem = false; + OUString m_aTitle; + bool m_bInCreator = false; + bool m_bInCreatorItem = false; + OUString m_aCreator; + bool m_bInLanguage = false; + bool m_bInLanguageItem = false; + OUString m_aLanguage; + bool m_bInDate = false; + bool m_bInDateItem = false; + OUString m_aDate; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmltbli.cxx b/writerperfect/source/writer/exp/xmltbli.cxx new file mode 100644 index 000000000..0e5818f0b --- /dev/null +++ b/writerperfect/source/writer/exp/xmltbli.cxx @@ -0,0 +1,254 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "xmltbli.hxx" + +#include "txtparai.hxx" +#include "xmlimp.hxx" +#include "xmltext.hxx" + +#include + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +namespace +{ +/// Handler for . +class XMLTableRowContext : public XMLImportContext +{ +public: + XMLTableRowContext(XMLImport& rImport); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + int GetColumn() const; + void SetColumn(int nColumn); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + +private: + int m_nColumn = 0; +}; + +/// Handler for . +class XMLTableCellContext : public XMLImportContext +{ +public: + XMLTableCellContext(XMLImport& rImport, XMLTableRowContext& rRow); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + +private: + XMLTableRowContext& m_rRow; +}; +} + +XMLTableCellContext::XMLTableCellContext(XMLImport& rImport, XMLTableRowContext& rRow) + : XMLImportContext(rImport) + , m_rRow(rRow) +{ +} + +rtl::Reference XMLTableCellContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateTextChildContext(GetImport(), rName); +} + +void XMLTableCellContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + + if (rAttributeName == "table:style-name") + FillStyles(rAttributeValue, GetImport().GetAutomaticCellStyles(), + GetImport().GetCellStyles(), aPropertyList); + else + { + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } + aPropertyList.insert("librevenge:column", m_rRow.GetColumn()); + GetImport().GetGenerator().openTableCell(aPropertyList); + m_rRow.SetColumn(m_rRow.GetColumn() + 1); +} + +void XMLTableCellContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeTableCell(); +} + +namespace +{ +/// Handler for . +class XMLTableColumnContext : public XMLImportContext +{ +public: + XMLTableColumnContext(XMLImport& rImport, librevenge::RVNGPropertyListVector& rColumns); + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + +private: + librevenge::RVNGPropertyListVector& m_rColumns; +}; +} + +XMLTableColumnContext::XMLTableColumnContext(XMLImport& rImport, + librevenge::RVNGPropertyListVector& rColumns) + : XMLImportContext(rImport) + , m_rColumns(rColumns) +{ +} + +void XMLTableColumnContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + + if (rAttributeName == "table:style-name") + FillStyles(rAttributeValue, GetImport().GetAutomaticColumnStyles(), + GetImport().GetColumnStyles(), aPropertyList); + } + m_rColumns.append(aPropertyList); +} + +XMLTableRowContext::XMLTableRowContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +rtl::Reference XMLTableRowContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "table:table-cell") + return new XMLTableCellContext(GetImport(), *this); + if (rName == "table:covered-table-cell") + { + ++m_nColumn; + GetImport().GetGenerator().insertCoveredTableCell(librevenge::RVNGPropertyList()); + } + else + SAL_WARN("writerperfect", "XMLTableRowContext::CreateChildContext: unhandled " << rName); + return nullptr; +} + +void XMLTableRowContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + librevenge::RVNGPropertyList aPropertyList; + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + + if (rAttributeName == "table:style-name") + FillStyles(rAttributeValue, GetImport().GetAutomaticRowStyles(), + GetImport().GetRowStyles(), aPropertyList); + } + GetImport().GetGenerator().openTableRow(aPropertyList); +} + +void XMLTableRowContext::endElement(const OUString& /*rName*/) +{ + GetImport().GetGenerator().closeTableRow(); +} + +int XMLTableRowContext::GetColumn() const { return m_nColumn; } + +void XMLTableRowContext::SetColumn(int nColumn) { m_nColumn = nColumn; } + +XMLTableContext::XMLTableContext(XMLImport& rImport, bool bTopLevel) + : XMLImportContext(rImport) + , m_bTopLevel(bTopLevel) +{ +} + +rtl::Reference XMLTableContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + if (rName == "table:table-column") + // Make sure columns are parsed before we open the table. + return new XMLTableColumnContext(GetImport(), m_aColumns); + + if (!m_bTableOpened) + { + if (!m_aColumns.empty()) + m_aPropertyList.insert("librevenge:table-columns", m_aColumns); + GetImport().GetGenerator().openTable(m_aPropertyList); + m_bTableOpened = true; + } + + if (rName == "table:table-row") + return new XMLTableRowContext(GetImport()); + + SAL_WARN("writerperfect", "XMLTableContext::CreateChildContext: unhandled " << rName); + + return nullptr; +} + +void XMLTableContext::startElement( + const OUString& /*rName*/, const css::uno::Reference& xAttribs) +{ + for (sal_Int16 i = 0; i < xAttribs->getLength(); ++i) + { + const OUString& rAttributeName = xAttribs->getNameByIndex(i); + const OUString& rAttributeValue = xAttribs->getValueByIndex(i); + + if (rAttributeName == "table:style-name") + { + FillStyles(rAttributeValue, GetImport().GetAutomaticTableStyles(), + GetImport().GetTableStyles(), m_aPropertyList); + if (m_bTopLevel) + GetImport().HandlePageSpan(m_aPropertyList); + } + else + { + OString sName = OUStringToOString(rAttributeName, RTL_TEXTENCODING_UTF8); + OString sValue = OUStringToOString(rAttributeValue, RTL_TEXTENCODING_UTF8); + m_aPropertyList.insert(sName.getStr(), sValue.getStr()); + } + } +} + +void XMLTableContext::endElement(const OUString& /*rName*/) +{ + if (m_bTableOpened) + { + GetImport().GetGenerator().closeTable(); + } +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmltbli.hxx b/writerperfect/source/writer/exp/xmltbli.hxx new file mode 100644 index 000000000..c1b33f498 --- /dev/null +++ b/writerperfect/source/writer/exp/xmltbli.hxx @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLTableContext : public XMLImportContext +{ +public: + XMLTableContext(XMLImport& rImport, bool bTopLevel = false); + + rtl::Reference + CreateChildContext(const OUString& rName, + const css::uno::Reference& xAttribs) override; + + void SAL_CALL + startElement(const OUString& rName, + const css::uno::Reference& xAttribs) override; + void SAL_CALL endElement(const OUString& rName) override; + +private: + bool m_bTableOpened = false; + /// If the context is a direct child of XMLBodyContentContext. + /// Only direct child of XMLBodyContentContext has to handle page span. + bool m_bTopLevel; + librevenge::RVNGPropertyList m_aPropertyList; + librevenge::RVNGPropertyListVector m_aColumns; +}; + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmltext.cxx b/writerperfect/source/writer/exp/xmltext.cxx new file mode 100644 index 000000000..933cf43e1 --- /dev/null +++ b/writerperfect/source/writer/exp/xmltext.cxx @@ -0,0 +1,55 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "xmltext.hxx" + +#include "txtparai.hxx" +#include "xmltbli.hxx" +#include "XMLSectionContext.hxx" +#include "XMLTextListContext.hxx" +#include "xmlimp.hxx" + +using namespace com::sun::star; + +namespace writerperfect::exp +{ +XMLBodyContentContext::XMLBodyContentContext(XMLImport& rImport) + : XMLImportContext(rImport) +{ +} + +void XMLBodyContentContext::endElement(const OUString& /*rName*/) +{ + if (GetImport().GetIsInPageSpan()) + GetImport().GetGenerator().closePageSpan(); +} + +rtl::Reference XMLBodyContentContext::CreateChildContext( + const OUString& rName, const css::uno::Reference& /*xAttribs*/) +{ + return CreateTextChildContext(GetImport(), rName, true); +} + +rtl::Reference CreateTextChildContext(XMLImport& rImport, + std::u16string_view rName, bool bTopLevel) +{ + if (rName == u"text:p" || rName == u"text:h") + return new XMLParaContext(rImport, bTopLevel); + if (rName == u"text:section") + return new XMLSectionContext(rImport); + if (rName == u"table:table") + return new XMLTableContext(rImport, bTopLevel); + if (rName == u"text:list") + return new XMLTextListContext(rImport); + return nullptr; +} + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/exp/xmltext.hxx b/writerperfect/source/writer/exp/xmltext.hxx new file mode 100644 index 000000000..50188acfe --- /dev/null +++ b/writerperfect/source/writer/exp/xmltext.hxx @@ -0,0 +1,34 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "xmlictxt.hxx" + +namespace writerperfect::exp +{ +/// Handler for . +class XMLBodyContentContext : public XMLImportContext +{ +public: + XMLBodyContentContext(XMLImport& rImport); + + rtl::Reference CreateChildContext( + const OUString& rName, + const css::uno::Reference& /*xAttribs*/) override; + void SAL_CALL endElement(const OUString& rName) override; +}; + +/// Context factory for body text, section, table cell, etc. +rtl::Reference +CreateTextChildContext(XMLImport& rImport, std::u16string_view rName, bool bTopLevel = false); + +} // namespace writerperfect::exp + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/source/writer/wpftwriter.component b/writerperfect/source/writer/wpftwriter.component new file mode 100644 index 000000000..176d48750 --- /dev/null +++ b/writerperfect/source/writer/wpftwriter.component @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/writerperfect/source/writer/wpftwriter.component.extended b/writerperfect/source/writer/wpftwriter.component.extended new file mode 100644 index 000000000..577d05e96 --- /dev/null +++ b/writerperfect/source/writer/wpftwriter.component.extended @@ -0,0 +1,8 @@ +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +com.sun.star.comp.Writer.EPUBExportFilter +com.sun.star.comp.Writer.EPUBExportUIComponent diff --git a/writerperfect/source/writer/wpftwriter.component.extended2 b/writerperfect/source/writer/wpftwriter.component.extended2 new file mode 100644 index 000000000..91cd0e046 --- /dev/null +++ b/writerperfect/source/writer/wpftwriter.component.extended2 @@ -0,0 +1,12 @@ +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +com.sun.star.comp.Writer.AbiWordImportFilter +com.sun.star.comp.Writer.MSWorksImportFilter +com.sun.star.comp.Writer.MWAWImportFilter +com.sun.star.comp.Writer.WordPerfectImportFilter +org.libreoffice.comp.Writer.EBookImportFilter +org.libreoffice.comp.Writer.PagesImportFilter diff --git a/writerperfect/uiconfig/ui/exportepub.ui b/writerperfect/uiconfig/ui/exportepub.ui new file mode 100644 index 000000000..97c789ff5 --- /dev/null +++ b/writerperfect/uiconfig/ui/exportepub.ui @@ -0,0 +1,538 @@ + + + + + + False + True + 6 + EPUB Export + False + True + 0 + 0 + dialog + + + + + + False + True + vertical + 12 + + + False + end + + + _OK + True + True + True + True + True + True + + + False + True + 0 + + + + + _Cancel + True + True + True + True + + + False + True + 1 + + + + + _Help + True + True + True + True + + + False + True + 2 + True + + + + + False + True + end + 2 + + + + + + True + False + True + 6 + 12 + + + True + False + True + True + 6 + 0 + none + + + + True + False + True + 6 + 12 + 12 + 6 + + + True + False + Version: + True + versionlb + 0 + + + 0 + 0 + + + + + True + False + True + 0 + + EPUB 3.0 + EPUB 2.0 + + + + 1 + 0 + 2 + + + + + True + False + True + 0 + + Page break + Heading + + + + 1 + 1 + 2 + + + + + True + False + Split method: + True + splitlb + 0 + + + 0 + 1 + + + + + True + False + Layout method: + True + layoutlb + 0 + + + 0 + 2 + + + + + True + False + True + 0 + + Reflowable + Fixed + + + + 1 + 2 + 2 + + + + + + + True + False + General + True + 0 + + + + + + + + 0 + 0 + + + + + True + False + True + True + 6 + 0 + none + + + + True + False + True + 6 + 12 + 12 + 6 + + + True + False + Identifier: + True + identifier + 0 + + + 0 + 0 + + + + + True + False + Title: + True + title + 0 + + + 0 + 1 + + + + + True + False + Author: + True + author + 0 + + + 0 + 2 + + + + + True + False + Date: + True + date + 0 + + + 0 + 4 + + + + + True + False + Language: + True + language + 0 + + + 0 + 3 + + + + + True + True + True + True + True + + + 1 + 0 + + + + + True + True + True + True + True + + + 1 + 1 + + + + + True + True + True + True + True + + + 1 + 2 + + + + + True + True + True + True + True + + + 1 + 3 + + + + + True + True + True + True + True + + + 1 + 4 + + + + + + + True + False + Metadata + True + + + + + + + + 0 + 2 + + + + + True + False + True + True + 6 + 0 + none + + + + True + False + True + 6 + 12 + 12 + 6 + + + True + False + Cover image: + True + coverpath + 0 + + + 0 + 0 + + + + + True + True + True + True + True + + + 1 + 0 + + + + + Browse... + True + True + True + + + 2 + 0 + + + + + True + False + Media directory: + True + mediadir + 0 + + + 0 + 1 + + + + + True + True + True + True + True + + + 1 + 1 + + + + + Browse... + True + True + True + + + 2 + 1 + + + + + + + True + False + Customize + + + + + + + + 0 + 1 + + + + + False + True + 0 + + + + + + ok + cancel + help + + + + + + + + + + + + + + + + + diff --git a/writerperfect/uiconfig/ui/wpftencodingdialog.ui b/writerperfect/uiconfig/ui/wpftencodingdialog.ui new file mode 100644 index 000000000..cf6da9c69 --- /dev/null +++ b/writerperfect/uiconfig/ui/wpftencodingdialog.ui @@ -0,0 +1,95 @@ + + + + + + False + 6 + False + True + 0 + 0 + dialog + + + + + + False + vertical + 6 + + + False + end + + + _OK + True + True + True + True + True + True + + + True + True + 0 + + + + + _Cancel + True + True + True + True + + + True + True + 1 + + + + + False + False + 2 + + + + + True + False + start + _Character set: + True + comboboxtext + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + + ok + cancel + + + -- cgit v1.2.3